由于某些原因,我无法创建此表:
CREATE TABLE user_role (
user_id VARCHAR(20) NOT NULL,
role_id INTEGER UNSIGNED NOT NULL,
FOREIGN KEY (user_id)
REFERENCES users(user_id),
FOREIGN KEY (role_id)
REFERENCES roles(role_id)
);下面类似的表格没有问题:
CREATE TABLE role_perm (
role_id INTEGER UNSIGNED NOT NULL,
perm_id INTEGER UNSIGNED NOT NULL,
FOREIGN KEY (role_id)
REFERENCES roles(role_id),
FOREIGN KEY (perm_id)
REFERENCES permissions(perm_id)
);我得到的错误消息是:
#1005 - Can't create table 'test.user_role' (errno: 150) (Details...) Supports transactions, row-level locking, and foreign keys
有什么想法吗?
发布于 2013-08-15 02:17:26
请参阅http://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html
如果重新创建已删除的表,则该表必须具有符合引用它的外键约束的定义。如前所述,它必须具有正确的列名和类型,并且必须在引用的键上具有索引。如果不满足这些条件,MySQL将返回错误1005,并在错误消息中引用错误150,这意味着没有正确形成外键约束。
If很难猜测,因为您没有提供roles和permissions表的定义,而是解释一下文档...
https://stackoverflow.com/questions/18238321
复制相似问题