bigint没有正确插入

时间:2016-12-16 06:11:48

标签: mysql laravel bigint

我有一个数据库和一个bigint列类型。每次我向此列插入值时,我总是得到错误的数字。例如,我插入值“198705122006041001”,它总是插入此值“2147483647”。

我使用laravel作为我的项目,如果我使用eloquent来显示bigint,它将无法正确显示,但如果我手动使用PDO,它将正确显示。

3 个答案:

答案 0 :(得分:3)

PHP没有bigint数据类型,它会溢出并使用int.max。你必须将bigints表示为字符串或浮点数。请注意,浮动不精确,可能会导致意外。

在MySQL中进行数学变换,并且在必要时不要忘记强制转换为bigint。

答案 1 :(得分:2)

您应该再次检查,因为它绝对是int,而不是bigint2147483647maximum possible value for signed int

答案 2 :(得分:1)

https://laracasts.com/discuss/channels/eloquent/fbid-bigint-with-model-and-eloquent。 Laravel用户遇到了同样的问题,最终不得不将结果转换为字符串。

另一位用户评论指出,XAMPP仅提供32位PHP二进制文件,这限制了PHP整数的大小。

使用以下代码检查PHP整数大小:

<?php

echo "Integer size can be determined using the constant PHP_INT_SIZE="
  . (PHP_INT_SIZE * 8) 
  . " bits, maximum value using the constant PHP_INT_MAX="
  . PHP_INT_MAX;

另见http://php.net/manual/en/language.types.integer.php

安装https://laravel.com/docs/5.3/homestead并获取64位PHP二进制文件。