Mac 在用MySQLworkbench是为一个表添加外键时,为什么总选不上需要的被引用属性,我仔细看了属性的类型是相同的,字符集也都是utf-8,引擎也是InnoDB(操作系统-macos)
在 MySQL Workbench 创建表时添加外键,需要满足一些条件才能成功。如果 Mac 中选择某些属性时遇到了问题,可以尝试以下几个解决方案:
必须首先确保父表和子表使用的引擎都是 InnoDB,否则无法创建外键约束。可以通过以下查询语句来检查表使用的引擎:
SHOW CREATE TABLE table_name;
确保需要引用的外键属性必须定义为主键或唯一键,否则无法引用。在 MySQL Workbench 中选择需要引用的属性之前,需要先将其定义为主键或唯一键。可以使用以下命令将属性定义为主键或唯一键:
ALTER TABLE table_name ADD PRIMARY KEY (column_name);
ALTER TABLE table_name ADD UNIQUE (column_name);
确保被引用的属性的数据类型必须与引用属性的数据类型相同。在 MySQL Workbench 中选择字段时,请确保所选的字段是与您要引用的字段具有相同数据类型的字段。
请注意,在添加外键时可能会遇到字符集不匹配的问题。因此,请确保相关表使用相同的字符集,并确保 MySQL Workbench 中的字符集配置与相关表的字符集一致。可以通过以下语句来检查和设置表的字符集和排序规则:
SHOW CREATE TABLE table_name;
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
该回答引用GPTᴼᴾᴱᴺᴬᴵ
如果MySQL Workbench无法选择外键所需的被引用属性,可能有以下原因:
如果以上三种情况都没有问题,您可以尝试重新连接数据库,或者重新打开MySQL Workbench。如果问题仍然存在,您可以尝试使用命令行方式添加外键,以确认问题是否在MySQL Workbench上。命令行方式添加外键的语法如下:
ALTER TABLE table_name ADD CONSTRAINT fk_name FOREIGN KEY (column_name) REFERENCES ref_table_name(ref_column_name);
其中,table_name是当前表的名称,column_name是当前表要作为外键的属性名称,fk_name是外键的名称,ref_table_name是被引用表的名称,ref_column_name是被引用表中对应属性的名称。
如果命令行方式添加外键也失败,可能是MySQL数据库版本的问题,您可以尝试更新MySQL版本或者重新安装MySQL。