提交 1637b06f 编写于 作者: T Timothé Malahieude

MySQL 8: fix duplicates in foreign keys

Former-commit-id: 01ee975c
上级 16fee799
......@@ -494,7 +494,14 @@ public class MySQLTable extends MySQLTableBase implements DBPObjectStatistics
fkList.add(fk);
}
MySQLTableForeignKeyColumn fkColumnInfo = new MySQLTableForeignKeyColumn(fk, fkColumn, keySeq, pkColumn);
fk.addColumn(fkColumnInfo);
if (fk.hasColumn(fkColumnInfo)) {
// Known MySQL bug, metaData.getImportedKeys() can return duplicates
// https://bugs.mysql.com/bug.php?id=95280
log.debug("FK "+ fkName +" has already been added, skip");
}
else {
fk.addColumn(fkColumnInfo);
}
}
}
} finally {
......
......@@ -89,6 +89,20 @@ public class MySQLTableForeignKey extends JDBCTableForeignKey<MySQLTable, MySQLT
columns.add(column);
}
public boolean hasColumn(MySQLTableForeignKeyColumn column) {
if (columns != null) {
String columnName = column.getName();
String refName = column.getReferencedColumn().getName();
for (MySQLTableForeignKeyColumn col : columns) {
if (columnName.equals(col.getName()) &&
refName.equals(col.getReferencedColumn().getName())) {
return true;
}
}
}
return false;
}
@NotNull
@Override
public String getFullyQualifiedName(DBPEvaluationContext context)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册