我试图在phpmyadmin中创建表时遇到错误

时间:2013-06-21 03:09:42

标签: mysql sql database phpmyadmin

我正在尝试运行以下内容:

CREATE TABLE IF NOT EXISTS table_name (
user_id int(11) NOT NULL,
other_id int(11) NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (other_id) REFERENCES other_table(id),
PRIMARY KEY (user_id, other_id)
);

并收到以下错误:

#1005 - Can't create table 'database_name.table_name' (errno: 150)
我做错了什么?这样可以在另一个环境而不是phpmyadmin sql环境中运行它。

3 个答案:

答案 0 :(得分:1)

看看这个SO question

请注意正确的答案。 检查列类型它们需要匹配。可能是你的问题。

一般来说,这是FK in Mysql的权威指南。

  

除了SHOW ERRORS之外,如果出现外键错误   涉及InnoDB表(通常是MySQL Server中的Error 150),你   可以获得最近InnoDB外国的详细解释   检查SHOW ENGINE INNODB STATUS的输出时出现键错误。

编辑:纳入评论

PHPMyAdmin上的表默认为 MyISAM 。在Local,他们默认为 InnoDB MyISAM 不支持FK。这并没有完全解释差异,因为基于MySql Documentation,它应该正常工作,而不是创建FK。 (可能是设置问题或旧版本问题)

答案 1 :(得分:0)

usersother_table是否存在?

您不能将外键引用到不存在的表。

您可以随后使用alter table添加引用。

答案 2 :(得分:0)

DROP TABLE IF EXISTS `table_name`;
CREATE TABLE IF NOT EXISTS table_name (
user_id int(11) NOT NULL,
other_id int(11) NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (other_id) REFERENCES other_table(id),
PRIMARY KEY (user_id, other_id)
);