forum.bitel.ru http://forum.bitel.ru/ |
|
Mysql 5.1 и Mysql 5.5. Валидатор http://forum.bitel.ru/viewtopic.php?f=22&t=7326 |
Страница 1 из 1 |
Автор: | Phricker [ 20 окт 2012, 14:10 ] |
Заголовок сообщения: | Mysql 5.1 и Mysql 5.5. Валидатор |
Предыстория: Решил вытащить базу на отдельный сервер. На сервере поднял Percona Mysql 5.5 Код: Server version: 5.5.25a-27.1 Percona Server (GPL), Release rel27.1, Revision 277 mysql Ver 14.14 Distrib 5.5.25a, for Linux (x86_64) using readline 5.1 Поднял репликацию все дела. Чтобы в день Y в час Х выключить все это дело и просто переключить обращение к другому серверу. История: Сегодня с утра смотрю в show slave status\G и вижу Код: Last_Error: Error 'BIGINT UNSIGNED value is out of range in '(`bgbilling`.`contract_balance`.`mm` - 1)'' on query. Default database: 'bgbilling'. Query: 'CREATE TEMPORARY TABLE _validator_balance_dump( UNIQUE(cid) ) SELECT cid, MAX(yy*12+(mm-1))%12 + 1 AS mm,FLOOR(MAX(yy*12+(mm-1)) / 12) AS yy FROM contract_balance WHERE (yy*12 + mm)<(2012*12 + 10) GROUP BY cid' Собственно как оказалось присутствует проблема с тем, что в mysql 5.1 версии выборка слишком больших значений возвращала минусовое значение, в 5.5 версии на это уже ругается Код: mysql> SELECT 9223372036854775807 + 1; +-------------------------+ | 9223372036854775807 + 1 | +-------------------------+ | -9223372036854775808 | +-------------------------+ 1 row in set (0.00 sec) Код: mysql> SELECT 9223372036854775807 + 1;
ERROR 1690 (22003): BIGINT value is out of range in '(9223372036854775807 + 1)' mysql> |
Автор: | Phricker [ 21 окт 2012, 01:28 ] |
Заголовок сообщения: | Re: Mysql 5.1 и Mysql 5.5. Валидатор |
![]() ![]() договора с ID = 0 у меня нет. |
Автор: | Phricker [ 21 окт 2012, 01:31 ] |
Заголовок сообщения: | Re: Mysql 5.1 и Mysql 5.5. Валидатор |
Но была запись в contract_balance ![]() Удалил - запустил реплику дальше. Проверим ночью ) |
Автор: | snark [ 22 окт 2012, 12:30 ] |
Заголовок сообщения: | Re: Mysql 5.1 и Mysql 5.5. Валидатор |
Phricker писал(а): Код: mysql> SELECT 9223372036854775807 + 1; ERROR 1690 (22003): BIGINT value is out of range in '(9223372036854775807 + 1)' mysql> Странно, т.к. у unsigned bigint (выше написано, что unsigned) максимум 18446744073709551615. |
Автор: | Phricker [ 22 окт 2012, 12:35 ] |
Заголовок сообщения: | Re: Mysql 5.1 и Mysql 5.5. Валидатор |
Там вся проблема оказалась в этой нулевой записи. Руки поотрывать тому кто это сделал ![]() ![]() |
Автор: | snark [ 22 окт 2012, 13:02 ] |
Заголовок сообщения: | Re: Mysql 5.1 и Mysql 5.5. Валидатор |
Таки ХЗ откуда оно у тя взялось. У меня так: Код: mysql> SELECT id FROM contract ORDER BY id LIMIT 3; +----+ | id | +----+ | 1 | | 2 | | 3 | +----+ 3 rows in set (0.00 sec) Код: mysql> SELECT * FROM contract_balance ORDER BY cid LIMIT 3; +------+----+-----+---------+--------+--------+--------+ | yy | mm | cid | summa1 | summa2 | summa3 | summa4 | +------+----+-----+---------+--------+--------+--------+ | 2012 | 4 | 1 | 0.00 | 0.00 | 0.00 | 0.00 | | 2008 | 9 | 2 | 0.00 | 0.00 | 441.70 | 0.00 | | 2008 | 10 | 2 | -441.70 | 0.00 | 341.52 | 0.00 | +------+----+-----+---------+--------+--------+--------+ 3 rows in set (0.02 sec) Кстати, как перкона в бою? |
Автор: | Phricker [ 22 окт 2012, 13:32 ] |
Заголовок сообщения: | Re: Mysql 5.1 и Mysql 5.5. Валидатор |
snark писал(а): Кстати, как перкона в бою? Пока висит как реплика ничего толком сказать и не могу ![]() |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |