在将答案标记为重复之前,我想说我已经去过这个Q& A:Incorrect Integer (2147483647) is inserted into MySQL?而我的问题则是相反的。 MySQL正在错误地返回一个整数。正如之前的问题,我正在使用Steam API
并且它们恰好有很长IDs
。
以下是我遵循的以下步骤:
Dota2_items
组(103582791433341052
)的ID并插入DB
。 103582791433341060
GiveawayTasks::where('id', 1)->first()
的 "select * from giveaway_task where id = 1"
注意两个ID之间的8个差异值。看起来数据库已经为初始ID添加了8个值。
为了解决这个问题,我做了PHP_MAX_INT
,返回9223372036854776000
。正是我期待来自64 bit machine
。现在我尝试从数据库中减去PHP_MAX_INT
和数字,以查看int是否大于PHP_MAX_INT
可以处理的:
PHP_MAX_INT - <Number from the database>
- &gt; 9223372036854776000 - 103582791433341052 = 9119789245421434948
这使我得出的结论是,我并不是想在一个变量中存储多于PHP_MAX_INT
可以处理的变量。
我不确定这里发生了什么,因为这超出了我的专长。任何帮助将不胜感激。
我正在使用Laravel框架,但我不认为这与案例有关。
答案 0 :(得分:0)
而不是Integers
使用String
而不是ids
。您收到该错误是因为mysql
的最大整数值为2147483647 for 32-bit
,与您的输入103582791433341052
相比较。如果您将integers
视为String
,则可能会解决问题。
答案 1 :(得分:0)
对于'id'列类型,您需要使用BigInt而不是Int。有关详细信息,请参阅this table。
编辑:字符串可能是更好的选择,如下面的评论所示。