2013-09-23 141 views
0

其实我用这个sql脚本在mysql 5.0.24上创建了表格方案,它只是工作正常,问题是当我在mysql 5.5上试过同样的脚本时。 16我得到如下错误信息:mysql - 用外键创建表 - 错误150

general error message from server: "can't create table 'amdb.am_wta_methodtree' (errno: 150)"

这里是我的SQL:

create table AM_WTA_MethodInstance(
"ID" BIGINT NOT NULL, 
"TRANSACTIONID" BIGINT NOT NULL, 
"INVOCATIONTIME" BIGINT NOT NULL, 
"METHODIDENTIFIERID" BIGINT NOT NULL, 
"THREADID" VARCHAR(255) NOT NULL, 
"INCLUSIVETIME" BIGINT NOT NULL DEFAULT 0, 
"EXCLUSIVETIME" BIGINT NOT NULL DEFAULT 0, 
"STATUS" INTEGER(1) NOT NULL DEFAULT 0, 
"EXCEPTIONMESSAGE" TEXT, 
PRIMARY KEY ("ID"), 
FOREIGN KEY(METHODIDENTIFIERID) REFERENCES AM_WTA_MethodIdentifier(ID), 
FOREIGN KEY(TRANSACTIONID) REFERENCES AM_WTA_Transaction(TRANSACTIONID) ON DELETE CASCADE) 

create table AM_WTA_MethodTree(
"PARENTID" BIGINT NOT NULL, 
"CHILDID" BIGINT NOT NULL, 
"INVOCATIONTIME" BIGINT NOT NULL, 
PRIMARY KEY ("PARENTID","CHILDID"), 
FOREIGN KEY(PARENTID,CHILDID) REFERENCES AM_WTA_MethodInstance(ID,ID) ON DELETE CASCADE) 
+0

你是如何登录到mysql的。也许用户无权创建表格。 – Tamseyc

+0

实际上我拥有数据库的root权限。 – atari83

回答

0

如果您创建表提交,并创建外键它应该工作了。

谢谢

+0

那么,我已经创建了表,然后我试图创建外键,但仍然是相同的错误: 'mysql> alter table AM_WTA_MethodTree添加外键(PARENTID,CHILDID)引用AM_WTA_MethodInstance(ID,ID)ON DELETE CASCADE; ' '错误1005(HY000):无法创建表'AMDB。#sql-dbf_4d'(errno:150)' – atari83

0

方法实例表应该先被创建,然后才能被引用。我建议你先创建表格。

+0

我已经创建了方法实例表(方法树表之前),然后我尝试创建外键...但结果相同。 – atari83