1

我想在 mysql db 中插入一些项目。

当我在我的 python 脚本中这样做时,我得到了:

错误 1062:密钥“product_code”的重复条目“222”。product_code 是一个唯一字段。

当我在 mysql 命令行中执行此操作时,我得到:

错误1205(HY000):超过锁定等待超时;尝试重新启动事务。

mysql安装在win32上;该表的引擎是innodb。

代码:

conn = mdb.connect(user = 'root', passwd = '[REMOVED]', db = 'vancl')
cur = conn.cursor()

sql2 = "insert into vancl.vancl_query1(product_code) values('100000')"
print sql2
cur.execute(sql2)

cur.close()
4

2 回答 2

0

这意味着该product_code列上放置了唯一索引约束。唯一索引约束告诉 MySQL 一个字段不能有重复值,即每个字段必须是唯一的。当该值已存在于列中的某处时,尝试将值 222 插入到 product_code 中时,您会遇到“重复输入”错误。

于 2012-06-15T02:15:53.383 回答
0

现在,我重新创建一个与上一个相同的表。在脚本中,没有报错,但实际上没有插入数据。在命令行中,插入 sql 完美。

如果您使用像 InnoDB 这样的事务引擎,您的数据将不会被保存,因为 MySqlDb 默认为关闭自动提交。要将数据实际保存到数据库,您必须调用 commit

conn = mdb.connect(user = 'root', passwd = '[REMOVED]', db = 'vancl')
cur = conn.cursor()

sql2 = "insert into vancl.vancl_query1(product_code) values('100000')"
print sql2

cur.execute(sql2)

//Commit the data
conn.commit() 

cur.close()
于 2012-06-15T04:03:23.090 回答