我正试图用一个外键引用在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)