Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python MySQLdb:重复条目';2147483647';对于键1_Python_Mysql_Mysql Python_Duplicates - Fatal编程技术网

Python MySQLdb:重复条目';2147483647';对于键1

Python MySQLdb:重复条目';2147483647';对于键1,python,mysql,mysql-python,duplicates,Python,Mysql,Mysql Python,Duplicates,当我用Python运行程序时,出现了这个错误。 以下是我的数据库表: Field Type Collation Null Key Default articleCode varchar(25) latin1_swedish_ci NO UNI dateReceived datetim

当我用Python运行程序时,出现了这个错误。 以下是我的数据库表:

Field           Type            Collation       Null        Key     Default     
articleCode   varchar(25)    latin1_swedish_ci   NO         UNI                                                
dateReceived   datetime            NULL          NO         MUL     0000-00-00 00:00:00                  
s100RSD        datetime            NULL          YES                0000-00-00 00:00:00        
remarks        longtext      latin1_swedish_ci   YES                        
为了简化程序的问题,我将隔离程序中出错的部分,如下所示:

import MySQLdb

def main():
    dateReceived = '2011-10-07 01:06:30'
    articleCode = 'name'
    s100rsd = '2011-10-07 01:06:30'
    remark_text = 'This is a remark'
    db = MySQLdb.connect('server', 'user', 'passwd', 'table_name', port)
    cur = db.cursor()
    db_query = cur.execute("INSERT INTO tblS100CurrentListing (articleCode, dateReceived, s100RSD, remarks) VALUES ('articleCode', 'dateReceived', 's100rsd', 'remark_text')")
    cur.close()
    db.close()

if __name__ == '__main__':
    main()
下面是我得到的错误:_mysql_exceptions.IntegrityError:(1062,“键1的重复条目'2147483647')


谢谢你的帮助

您似乎在向数据库中插入常量,而不是实际值。相反,尝试类似的方法

db_query = cur.execute("INSERT INTO tblS100CurrentListing " +
    "(articleCode, dateReceived, s100RSD, remarks) VALUES (%s, %s, %s, %s)", 
    (articleCode, dateReceived, s100rsd, remark_text))

您似乎在向数据库中插入常量,而不是实际值。相反,尝试类似的方法

db_query = cur.execute("INSERT INTO tblS100CurrentListing " +
    "(articleCode, dateReceived, s100RSD, remarks) VALUES (%s, %s, %s, %s)", 
    (articleCode, dateReceived, s100rsd, remark_text))
字段“articleCode”上的唯一键防止MySQL在此列中有两条内容相同的记录。看起来您在第一次运行程序时已经插入了一个

删除以前插入的articleCode为'name'的记录,或删除articleCode字段上的唯一键,或尝试插入articleCode的不同值

希望这有帮助

字段“articleCode”上的唯一键,防止MySQL在此列中有两条内容相同的记录。看起来您在第一次运行程序时已经插入了一个

删除以前插入的articleCode为'name'的记录,或删除articleCode字段上的唯一键,或尝试插入articleCode的不同值


希望这有帮助

按照其他答案中所述更正代码后,应修改表格,以重置其自动递增计数器

ALTER TABLE tblS100CurrentListing auto_increment=1
应将计数器重置为可能的最低值

需要从表中删除或修复错误值;否则,更改将不会产生任何影响


此外,是否真的需要插入设置为自动递增的字段?或者这是恢复过程的一部分?否则,这两件事是多余的:要么自动获取数据,要么插入数据。两者都可能(如图所示)导致冲突。

按照其他答案中所述更正代码后,应修改表格以重置其自动增量计数器

ALTER TABLE tblS100CurrentListing auto_increment=1
应将计数器重置为可能的最低值

需要从表中删除或修复错误值;否则,更改将不会产生任何影响


此外,是否真的需要插入设置为自动递增的字段?或者这是恢复过程的一部分?否则,这两件事是多余的:要么自动获取数据,要么插入数据。两者都可能(如图所示)导致冲突。

发生这种情况是因为密钥的限制。如果是整数,则2147483647是限制。您可以选择像BIGINT或比INTEGER大的值。2147483647之后的所有记录都将尝试在值2147483647上写入。这就是为什么你会有这个问题。用BIGINT/LARGEINT或类似的东西更改它


希望有帮助。

发生这种情况是因为密钥的限制。如果是整数,则2147483647是限制。您可以选择像BIGINT或比INTEGER大的值。2147483647之后的所有记录都将尝试在值2147483647上写入。这就是为什么你会有这个问题。用BIGINT/LARGEINT或类似的东西更改它


希望有帮助。

我应该提供完整的数据库模式。我应该提供完整的数据库模式。好的,我想,这就是我要找的。谢谢,我将尝试修改我的查询,并在这里再次更新。谢谢我尝试了你的建议,但我仍然得到“重复输入'2147483647'的密钥1”Joachim,我现在知道问题出在哪里了,我每次运行程序都有重复的主键。我现在的问题是,我的主键设置为自动递增,但每次我插入新行时,id设置始终为“2147483647”,这就是为什么我会得到键1的“重复条目”2147483647。我怎么处理这个?谢谢我现在修复所有错误。这只是一个模式问题。现在程序运行正常!谢谢你的帮助!好吧,我想,这就是我要找的。谢谢,我将尝试修改我的查询,并在这里再次更新。谢谢我尝试了你的建议,但我仍然得到“重复输入'2147483647'的密钥1”Joachim,我现在知道问题出在哪里了,我每次运行程序都有重复的主键。我现在的问题是,我的主键设置为自动递增,但每次我插入新行时,id设置始终为“2147483647”,这就是为什么我会得到键1的“重复条目”2147483647。我怎么处理这个?谢谢我现在修复所有错误。这只是一个模式问题。现在程序运行正常!谢谢你的帮助!谢谢你的帮助!这也有帮助!我现在将尝试重新编程我的代码。谢谢你的帮助!这也有帮助!我现在将尝试重新编程我的代码。