Rulli Wuji Wijianto
Rulli Wuji Wijianto

Reputation: 23

bigint not insert correctly

I have a database and a bigint column type. Everytime I insert value to this column I always got the wrong number. for example, I insert value "198705122006041001" and it always insert this value "2147483647".

I use laravel for my project, if I use eloquent to display the bigint it wont display correctly but if I use PDO manually, it will display correctly.

Upvotes: 2

Views: 2038

Answers (3)

Bill Karwin
Bill Karwin

Reputation: 562368

See https://laracasts.com/discuss/channels/eloquent/fbid-bigint-with-model-and-eloquent. A Laravel user had the same problem, and eventually had to cast the result to a string.

Another user comment pointed out that XAMPP provides only a 32-bit PHP binary, which limits the size of a PHP integer.

Check your PHP integer size with this code:

<?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;

See also http://php.net/manual/en/language.types.integer.php

Install https://laravel.com/docs/5.3/homestead and get a 64-bit PHP binary.

Upvotes: 1

Pred
Pred

Reputation: 9042

PHP has no bigint data type, it overwflows and uses int.max instead. You have to represent bigints as string or float. Be aware, that float is not precise and can lead to surprises.

Do the mathematical transformations in MySQL and don't forget to cast to bigint when necessary.

Upvotes: 3

Alexey Mezenin
Alexey Mezenin

Reputation: 163798

You should check this again, because it's definitely int, but not bigint. 2147483647 is a maximum possible value for signed int

Upvotes: 2

Related Questions