mysql, значение BIGINT вне диапазона - PullRequest
0 голосов
/ 29 января 2020

Я посмотрел на некоторые другие ответы на похожие вопросы, но ни один из них, казалось, не помог мне.

  [2020-01-28 23:26:29] CDbCommand failed to execute the SQL statement: SQLSTATE[22003]: Numeric value out of range: 1690 BIGINT value is out of range in 'count(`Um3mpV1OJwy6m`.`jobsubmits`.`id`) * 500000 * 4398046511104'
[2020-01-29 00:26:47] CronjobController::actionRun 0
[2020-01-29 00:27:07] CDbException#1
(
    [errorInfo] => array
    (
        0 => '22003'
        1 => 1690
        2 => 'BIGINT value is out of range in \'count(`Um3mpV1OJwy6m`.`jobsubmits`.`id`) * 500000 * 4398046511104\''
    )
    [*:message] => 'CDbCommand failed to execute the SQL statement: SQLSTATE[22003]: Numeric value out of range: 1690 BIGINT value is out of range in \'count(`Um3mpV1OJwy6m`.`jobsubmits`.`id`) * 500000 * 4398046511104\''
    [Exception:string] => ''
    [*:code] => 22003
    [*:file] => '/home/crypto-data/yiimp/site/web/framework/db/CDbCommand.php'
    [*:line] => 543
    [Exception:trace] => array

1 Ответ

1 голос
/ 29 января 2020

Ваше значение равно COUNT (), умноженному на:

500000 * 4398046511104 = 2199023255552000000

Максимальное значение подписанного BIGINT составляет 2 63 -1 = 9223372036854775807

9223372036854775807 / 2199023255552000000 = 4.1943

Поэтому, если ваш COUNT () больше 4, он превысит максимальное значение, которое может быть представлено в BIGINT со знаком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...