1

我已经用 NaviCat(一个 MySQL 应用程序)创建了一个外键,但是在我创建它的那一刻,它就从外键列表中消失了,并添加了一个新的索引。这是否意味着出现问题或发生这种情况是否正常?

我尝试使用 information_schema如何检查列是否已经是外键?但这导致Unknown table 'REFERENTIAL_CONSTRAINTS' in information_schema. 查询是否可能适用于 MsSQL 并且与 MySQL 不同?

4

2 回答 2

4
  1. 您可能正在创建外键的表是 MyISAM。转到表设计视图并转到选项选项卡以将表引擎更改为 InnoDB

  2. 您可以按照http://kevin.vanzonneveld.net/techblog/article/convert_all_tables_to_innodb_in_one_go/中的步骤将所有表更改为 InnoDB

  3. 在http://dev.mysql.com/doc/refman/5.5/en/innodb-default-se的 MySQL 配置文件(通常是 my.cnf)的 [mysqld] 部分添加 default-storage-engine=innodb 。 html

毕竟 MySQL 5.5 InnoDB 是默认存储引擎没有任何缺陷。

于 2012-03-05T09:48:40.023 回答
2

执行

SHOW CREATE TABLE myTable;

然后检查

ENGINE = InnoDB

如果这是真的,您可以使用外键。检查它是否包含这样的内容:

FOREIGN KEY (customer_id)  REFERENCES customer(id)

希望有帮助!

于 2012-03-05T09:52:08.880 回答