Mysql创建外键

我需要为我的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)")

有人知道如何解决吗?我以为我想念某物..因为我真的不知道“哪里”是错误..


湖上湖
浏览 188回答 1
1回答

森林海

您的主键是类型int unsigned,而您的外键是类型integer,两者是不兼容的。将您的外键更改为int unsigned,表将成功创建。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python