Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > 5.8 BIGINT UNSIGNED value is out of range


Автор: setnull 13.4.2011, 11:56
Все здравствуйте!!!

При переносе БД с версии 5.1.41 на 5.5.8 смешанные операции знаковых и беззнаковых bigint'ов в случаях отрицательного результата приводят к ошибке
BIGINT UNSIGNED value is out of range.

Первое, по теории: так и не разобрался. Раньше это обстоятельство просто не проверялось или по другому приводились типы и другие типы значились по-умолчанию?

Ну и, собственно, как теперь быть? Перекапывать весь код и приводить к знаковому не охотно как-то... Тем более еще пойди сразу вспомни и угадай, где такое может быть.
Нашел вариант с СКЛ-режимом NO_UNSIGNED_SUBTRACTION. Режим устанавливается, но ошибка не пропадает...

Спасибо!!!

Автор: Akina 13.4.2011, 12:07
Цитата(http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html)

When you use subtraction between integer values where one is of type UNSIGNED, the result is unsigned unless the NO_UNSIGNED_SUBTRACTION SQL mode is enabled. See Section 11.10, “Cast Functions and Operators”. 


Цитата(setnull @  13.4.2011,  12:56 Найти цитируемый пост)
Раньше это обстоятельство просто не проверялось или по другому приводились типы и другие типы значились по-умолчанию?

Нет, текст в манах один в один.

Цитата(setnull @  13.4.2011,  12:56 Найти цитируемый пост)
 Режим устанавливается, но ошибка не пропадает...

Странно...
А она часом не изменяется? может, она другая, потому что бОльший операнд великоват для SIGNED?

Попробуй проверить с реальными данными, но на консоли. Чтобы видеть реальный текст сообщений.

Автор: setnull 13.4.2011, 13:02
Цитата(Akina @ 13.4.2011,  12:07)
Нет, текст в манах один в один.

так вот и странно же... на одних и тех же данных...
я вот подумал, а могли при импортах/экспортах типы столбцов повидоизменяться?
хотя по логике они там именно знаковое и незнаковое должны быть...

посмотрю при возможности...

Добавлено через 2 минуты и 59 секунд
Цитата(Akina @ 13.4.2011,  12:07)
А она часом не изменяется? может, она другая, потому что бОльший операнд великоват для SIGNED?

Попробуй проверить с реальными данными, но на консоли. Чтобы видеть реальный текст сообщений.

нет, точка выполнения явно одна и та же...


да, с консолью нужно будет поиграться.

Автор: Akina 13.4.2011, 13:06
Цитата(setnull @  13.4.2011,  14:02 Найти цитируемый пост)
а могли при импортах/экспортах типы столбцов повидоизменяться?

Смотря как делать... накосячить трудно, но можно... особенно на пути вроде create table ... select ...

Автор: setnull 13.4.2011, 13:07
Цитата(Akina @ 13.4.2011,  12:07)
потому что бОльший операнд великоват для SIGNED

не совсем понял... можете уточнить?

Автор: Akina 13.4.2011, 13:43
Не всё то, что лезет в UNSIGNED, может быть помещено в SIGNED. 
И наоборот.

Автор: skeletor 11.1.2012, 12:26
Подскажите, побели ли проблему, а то сам я столкнулся с этим?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)