Python MySQLdb:重复条目';2147483647';对于键1
当我用Python运行程序时,出现了这个错误。 以下是我的数据库表: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
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。我怎么处理这个?谢谢我现在修复所有错误。这只是一个模式问题。现在程序运行正常!谢谢你的帮助!谢谢你的帮助!这也有帮助!我现在将尝试重新编程我的代码。谢谢你的帮助!这也有帮助!我现在将尝试重新编程我的代码。