MySQL在插入后提供错误的ID(数据类型?)

时间:2018-07-28 10:01:59

标签: python mysql sqldatatypes

我有一个小的python(3.64)脚本,可在MySQL DB(10.1.26 MariaDB)中插入记录

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

identifier是类似于2832718610241077149的整数,并且始终为19位数字。 MySQL字段为int(25)

我用来循环插入语句,但我只选择了1条记录(已通过MySQL Workbench检查)。那里的id与Python中的标识符没有什么共同之处,就像2157483647

我发现,当我将DB字段更改为varchar(25)时,它运行良好。然后可以选择循环的所有插入片段,并且ID也正确。但是我想这不是怎么做。

1 个答案:

答案 0 :(得分:1)

在MySQL中,INT(25)仅表示显示宽度as explained here。您没有一个能够存储25位宽数字的整数类型字段,一个INT字段将始终为32 bits wide,这说明了您得到的结果-该数字被切碎以适合32位

如果您需要存储这么大的数字,请查看DECIMAL or NUMERIC类型。

也请阅读this part of the manual,以了解MySQL如何处理这种情况。