我在mysql中创建了一个数据库和10个表(表类型为NONE) 我无法创建外键。提示信息
SQLyog的 所选表格不支持外键。 表引擎必须是InnoDB,PBXT或SolidDB
我现在必须改变我的所有牌桌吗? 感谢任何提示或建议
答案 0 :(得分:15)
通常,InnoDB用于支持外键和事务:
http://dev.mysql.com/doc/refman/5.1/en/innodb.html
您可以动态更改表格引擎:
ALTER TABLE tableName ENGINE = InnoDB;
您还可以更改新创建的表的默认值 - 如下所示:
http://dev.mysql.com/doc/refman/5.1/en/storage-engine-setting.html
答案 1 :(得分:8)
您正在使用的引擎不支持外键(因为错误消息显然告诉您)。您可以使用
更改正在使用的引擎ALTER TABLE `tableName` ENGINE = newEngine;
答案 2 :(得分:4)
是。默认存储引擎(MyISAM)不支持外键约束。
答案 3 :(得分:3)
MyISAM引擎支持外键。它不支持的是外键约束。
您可以继续创建任意数量的外键 - 但不要指望数据库为您强制执行完整性。
如果没有经过重大测试,请勿更改应用中的引擎;更换引擎会影响行为,不建议不经过精心设计和大量的QA工作。特别是,如果出现以下情况,从MyISAM切换到InnoDB会破坏您的应用程序:
答案 4 :(得分:1)
我遇到同样的问题,直到找到this post。
用于解决MyISAM或NDB(Cluster)的限制,约束 可以使用触发器强制执行。