我正试图用一个外键引用在mysql中创建一个表,如下所示:
在数据库A中:

CREATE TABLE replication (
  id varchar(255) NOT NULL PRIMARY KEY,
  uid varchar(255) NOT NULL,
  value int(11) NOT NULL,
  FOREIGN KEY (uid) REFERENCES databaseB.users(username)
);

在数据库B中,我有一个名为users的表,如下所示:
+-----------------+--------------+------+-----+---------+-------+
| Field           | Type         | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+-------+
| id              | varchar(255) | NO   |     | NULL    |       |
| username        | varchar(255) | NO   | PRI | NULL    |       |
+-----------------+--------------+------+-----+---------+-------+

当我尝试创建表复制时,出现以下错误:
ERROR 1005 (HY000): Can't create table 'databaseA.replication' (errno: 150)

知道吗?提前谢谢!

最佳答案

您需要向uid添加索引,否则将无法设置索引以引用任何内容。
另外,通常在数据库b中,users表在id上有一个主键,在username上有一个唯一的索引。然后从databasea设置外键。复制引用databaseb。用户(id)

10-04 12:37
查看更多