mysql返回的整数不正确

时间:2018-01-18 00:50:43

标签: php mysql

在将答案标记为重复之前,我想说我已经去过这个Q& A:Incorrect Integer (2147483647) is inserted into MySQL?而我的问题则是相反的。 MySQL正在错误地返回一个整数。正如之前的问题,我正在使用Steam API并且它们恰好有很长IDs

以下是我遵循的以下步骤:

  1. 获取Dota2_items组(103582791433341052)的ID并插入DB
  2. 组中的ID正确存储到数据库中
  3. 从现在返回103582791433341060
  4. 的数据库中获取相同的数字 翻译自Laravel 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框架,但我不认为这与案例有关。

2 个答案:

答案 0 :(得分:0)

而不是Integers使用String而不是ids。您收到该错误是因为mysql的最大整数值为2147483647 for 32-bit,与您的输入103582791433341052相比较。如果您将integers视为String,则可能会解决问题。

答案 1 :(得分:0)

对于'id'列类型,您需要使用BigInt而不是Int。有关详细信息,请参阅this table

编辑:字符串可能是更好的选择,如下面的评论所示。