Navicat 不能成功地创建外键?
发布时间:2021-12-07 19:22:31点击量:
可应用操作系统:Windows、macOS、Linux
可应用 Navicat 产品:Navicat for MySQL、Navicat for PostgreSQL、Navicat for SQLite、Navicat for Oracle、Navicat for MariaDB、Navicat Premium
可应用 Navicat 版本编号:全部
MySQL & MariaDB
如果你收到 MySQL 错误如 1005: Can't create table '.\mydb\#sql-44c_1c.frm'(errno: 150),它是由于创建外键失败。有些可能的情况导致在 MySQL 数据库创建外键失败。这些错误都关系到MySQL 本身。
例子情况:
1.如果两个字段(字段名和外键名)使用不相容的字段类型。
2.如果你使用 "On Delete Set Null",但字段不允许 null。
要在 MySQL 声明外键,用户应该紧记几个要点:
1.两个表必须是 InnoDB 类型。
2.在参考的表,必须有一个索引,参考的列被行为第一列的排序相同。
3.不支持索引前缀在外键列。
4.InnoDB 需要索引在外键和参考键,以便外键检查可以快速,不需要表扫描。
5.两个键字段必须有相容的字段类型。
6.整数类型的大小和符号必须是相同。
7.字符串类型的长度不一定是相同。
8.外键的名在数据库中必须是唯一的。
9.如果你指定一个 SET NULL 动作,确保你没有在子表中声明列为 NOT NULL.
欲了解更多外键限制的详细信息,请访问 - http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html
PostgreSQL
如果你收到 PostgreSQL 错误如 ERROR: there is no unique constraint matching given keys for referenced table "xxxx",它是由于创建外键失败。
要在 PGSQL 声明外键,用户应该紧记几个要点:
1.FOREIGN KEY 限制必须参考 PRIMARY KEY 或 UNIQUE 限制。
2.两个键字段必须有相容的数据类型。
3.必须在参考和被参考的表有 REFERENCES 权限。
Oracle
要在 Oracle 声明外键,用户应该紧记几个要点:
1.FOREIGN KEY 限制必须参考 PRIMARY KEY 或 UNIQUE 限制。
2.两个键字段必须有相容的数据类型。
3.复合外键被限制为 32 列。
4.必须有权限访问上级和子表。
欲了解更多外键限制的详细信息,请访问 - http://download.oracle.com/docs/cd/B14117_01/appdev.101/b10795/adfns_co.htm#1006976
SQLite
要在 SQLite 声明外键,用户应该紧记几个要点:
1.上级和子键必须有相同的基数。
欲了解更多外键限制的详细信息,请访问 - http://www.sqlite.org/foreignkeys.html