mysql在插入后提供了错误的id(数据类型?)

fkvaft9z  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(326)

我有一个小python(3.64)脚本,可以在mysql db(10.1.26)中插入记录

import MySQLdb as mdb
...
for id in allids
  ...
  cursor.execute("INSERT IGNORE INTO entity(id,name) VALUES (%s, %s)", (identifier, name))

标识符是一个整数,如 2832718610241077149 总是19位数。mysql字段为 int(25) .
我使用循环insert语句,但只选择了1条记录(用mysql工作台检查)。那里的id与python中的标识符没有任何共同点,就像 2157483647 .
我发现,当我把db字段改为 varchar(25) . 然后,所有的循环插入可以选择和ID是正确的。但我想这不是怎么做的。

rbpvctlc

rbpvctlc1#

在mysql中, INT(25) 仅指示显示宽度,如下所述。整数类型的字段不能存储25位宽的数字,整型字段总是32位宽,这就解释了您得到的结果-数字只是被切碎以适合32位。
如果需要存储如此大的数字,请查看十进制或数字类型。
同时阅读本手册的这一部分,了解mysql将如何处理这种情况。

相关问题