为了账号安全,请及时绑定邮箱和手机立即绑定

Mysql创建外键

Mysql创建外键

湖上湖 2021-03-22 13:12:13
我需要为我的Reviewers_POS表创建一个外键。我将Reviewers_Id作为主键,我想将其从Reviewrs_POS表传递给我的id_r1。    import MySQLdb as mdb    import sys    conexao = mdb.connect('localhost', 'root', 'rot', 'DbOmelete')    with conexao:      cur = conexao.cursor()   cur.execute("CREATE TABLE IF NOT EXISTS Reviewers(Reviewers_Id int unsigned not null AUTO_INCREMENT, PRIMARY KEY (Reviewers_Id),Title varchar(500), Polarity INT, Review TEXT);")   cur.execute("CREATE TABLE IF NOT EXISTS Reviewers_POS(ReviewersPOS_Id int unsigned not null PRIMARY KEY AUTO_INCREMENT, Review_POS TEXT,id_r1 integer,CONSTRAINT fk_id FOREIGN KEY (id_r1) REFERENCES Reviewers (Reviewers_Id));")__我收到此错误:追溯(最近一次通话):  File "SQLTesteForeign.py", line 14, in <module>    cur.execute("CREATE TABLE IF NOT EXISTS Reviewers_POS(ReviewersPOS_Id int unsigned not null PRIMARY KEY AUTO_INCREMENT, Review_POS TEXT,id_r1 integer,CONSTRAINT fk_id FOREIGN KEY (id_r1) REFERENCES Reviewers (Reviewers_Id) ON DELETE NO ACTION ON UPDATE NO ACTION);")  File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute    self.errorhandler(self, exc, value)  File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler    raise errorclass, errorvalue_mysql_exceptions.OperationalError: (1005, "Can't create table 'DbOmelete.Reviewers_POS' (errno: 150)")有人知道如何解决吗?我以为我想念某物..因为我真的不知道“哪里”是错误..
查看完整描述

1 回答

?
森林海

TA贡献2011条经验 获得超2个赞

您的主键是类型int unsigned,而您的外键是类型integer,两者是不兼容的。将您的外键更改为int unsigned,表将成功创建。



查看完整回答
反对 回复 2021-03-26
  • 1 回答
  • 0 关注
  • 187 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信