MySQL创建表报错:键列'idxxx'不存在及外键约束失败问题咨询
问题1:第一个CREATE TABLE语句报错的原因及解决办法
原因
你写的idxxx列定义前面用了全角空格,MySQL会把全角空格识别成列名的一部分,相当于实际创建的列名是 idxxx(注意前面的全角空格),而你在PRIMARY KEY (idxxx)里引用的是没有空格的idxxx,自然找不到对应的列,所以报错。
解决办法
把列定义前的全角空格替换成半角空格,或者直接删掉多余的缩进,确保列名前没有全角字符。修正后的语句如下:
CREATE TABLE userxxx( idxxx INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (idxxx) ) Engine=InnoDB;
问题2:外键关联报错的原因及解决办法
原因
还是全角空格的问题!你第二次创建userxxx表时,idxxx前面依然是全角空格,导致实际创建的列名是带全角空格的 idxxx,而非你预期的idxxx。后续创建Requestxxx表时,外键引用的是userxxx里的idxxx,但这张表根本不存在这个列,因此报错。
解决办法
- 先删除有问题的
userxxx表:
DROP TABLE IF EXISTS userxxx;
- 用修正后的语句重新创建
userxxx表(确保列名前是半角空格):
CREATE TABLE userxxx( idxxx INT NOT NULL AUTO_INCREMENT PRIMARY KEY ) Engine=InnoDB;
- 再执行
Requestxxx的创建语句,即可正常建立外键关联。
内容的提问来源于stack exchange,提问作者CsharpSqlGuy
相关产品推荐
相关产品推荐

