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. Валидатор

Там вся проблема оказалась в этой нулевой записи. Руки поотрывать тому кто это сделал :) Надеюсь не я :D

Автор:  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 писал(а):
Кстати, как перкона в бою?

Пока висит как реплика ничего толком сказать и не могу :) mysql mysql'ом )

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/