powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ошибка Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric
23 сообщений из 23, страница 1 из 1
Ошибка Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric
    #40127986
Nick00
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток. Столкнулись с проблемой создания бэкапа базы данных на Interbase 2009. При создании бэкапа выдается ошибка "Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric overflow, or string truncation.". Для определения в чем проблема я сгенерировал скрипты insert для всех таблиц и увидел, что в скриптах для нескольких таблиц с полями типа varchar insert для символьного поля генерирует строку:
'
текст в поле
'
Причем это только для строк, длина которых близка к указанной в длине этого поля (длина поля 250, длина текста 249). То есть длина текста подходит для поля, но из-за символов новой строки длина поля превышена.
Исходя из этого я понял, что проблема в символах новой строки. Если увеличить длину этих полей, бэкап проходит нормально.
Вопрос - как могли добавиться символы новой строки? С базой работали через приложение на делфи и оно выдает ошибку ошибку в случае длины строки большей длины поля...
...
Рейтинг: 0 / 0
Ошибка Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric
    #40127991
AltHasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nick00,

Про Delphi это в соседний форум.
Перед отправкой с приложения на сервер удалите символы #10,#13 и будет норм.
Удачи !
...
Рейтинг: 0 / 0
Ошибка Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric
    #40128055
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nick00Столкнулись с проблемой создания бэкапа базы данных на Interbase 2009.

Именно при создании именно бэкапа? Какой командой его создаёте?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric
    #40128074
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nick00,

скорее вопрос, зачем в базе уменьшали длину строкового поля, после того как туда напихали длинных данных.
Именно поэтому при бэкапе - а он читает все данные всех таблиц - и вылезла ошибка.
Точно такая же ошибка будет если вы сделаете select * from та_таблица.
...
Рейтинг: 0 / 0
Ошибка Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric
    #40128304
Nick00
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бэкап создавал через IBExpert. Проблема обнаружилась при попытке уменьшить размер БД. Чтобы узнать в чем проблема, сгенерировал инсерты в IBExpert и обнаружил что длинные строки записаны криво (короткие строки в сгенерированном скрипте записаны правильно). Длину поля не меняли, селекты работают без проблем. Есть подозрение что это какой-то глюк Interbase или IBExpert, так как приложение через которое работают с бд не дало бы отправить строку длиннее 250 символов. Не знаю как быть в данной ситуации, руками заменять все вхождения '\n на ' не хочется)
...
Рейтинг: 0 / 0
Ошибка Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric
    #40128305
Nick00
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, Ошибка при создании бэкапа и ясно почему она выдается. Вопрос в том, почему инсерты сгенерировались с символами новой строки для длинных строк
...
Рейтинг: 0 / 0
Ошибка Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric
    #40128328
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nick00,

это не вопрос. серверу пофиг, есть в строке переводы строк, или нет.
Nick00Длину поля не меняли
не верю. в строку нельзя записать данных больше ее объявленой длины.
...
Рейтинг: 0 / 0
Ошибка Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric
    #40128407
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nick00
Бэкап создавал через IBExpert

А бэкап через gbak тоже с ошибкой? Что в логе бэкапа, он точно выдает ошибку на той таблице, у которой по вашим словам проблема с размерностью поля?
...
Рейтинг: 0 / 0
Ошибка Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric
    #40128472
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

там сначала надо дать запрос типа
select r.rdb$relation_name, count(f.rdb$format)
from rdb$relations r join rdb$formats f
on r.rdb$relation_id = f.rdb$relation_id
group by 1
order by 2 desc

и посмотреть сколько форматов у той проблемной таблицы. Если там 1 - то это "неведомая хня". Если больше 1 - то, "меняли длину столбца через ибэксперт".

p.s. ситуации, когда код гбака отличался от кода в services api были, но очень давно и вроде один раз.
...
Рейтинг: 0 / 0
Ошибка Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric
    #40128582
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv
Nick00,

скорее вопрос, зачем в базе уменьшали длину строкового поля, после того как туда напихали длинных данных.
Именно поэтому при бэкапе - а он читает все данные всех таблиц - и вылезла ошибка.
Точно такая же ошибка будет если вы сделаете select * from та_таблица.

Блин, я и не знал про такое. :(
"Несоздаваемый" бэкап. В дополнение к "невосстановимым".
...
Рейтинг: 0 / 0
Ошибка Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric
    #40128635
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ,

да ладно. было строковое поле, с какими-то "кодами товара", а потом его херакс, и поменяли на integer. Ну и всё. Сервер-то откуда знает, что там есть "неконвертируемые" символы. Бэкап тут совсем ни при чем, данные тупо не будут читаться никаким запросом.
А поскольку бэкап читает данные, то у него тоже не получится.
...
Рейтинг: 0 / 0
Ошибка Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric
    #40128636
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv
ъъъъъ,

да ладно. было строковое поле, с какими-то "кодами товара", а потом его херакс, и поменяли на integer. Ну и всё. Сервер-то откуда знает, что там есть "неконвертируемые" символы. Бэкап тут совсем ни при чем, данные тупо не будут читаться никаким запросом.
А поскольку бэкап читает данные, то у него тоже не получится.

Дык, если и строковое поле в строковое, и с меньшей длиной - то же самое будет, при чем тут конверсия.
п....ц, однако.
...
Рейтинг: 0 / 0
Ошибка Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric
    #40128638
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ

Дык, если и строковое поле в строковое, и с меньшей длиной - то же самое будет, при чем тут конверсия.
п....ц, однако.


Тебя это удивляет? Вроде бы очевидный факт природы. И склероз мне шепчет о каких-то толковищах на эту тему аж где-то в 97-98 году, когда kdv работал в Эпсилон и тамошний форум был единственной IB-тусовкой в эсэсэсэре. И даже о том, что так делать альтер не позволял и энтузиасты, перед тем, как горько заплакать, хачили системные таблицы. А потом сей хак, вкупе с ещё некоторыми альтерами, которые IB не принимало, ввела в свой MDI-интерфейс одна популярная программа для конструирования и администрирования баз. Но, как я есть старый маразматег, это запросто могут быть сказки, легенды и тосты :) А консервия - ну что консервия, слово красивое, конфликт вона тоже дедлоком до сих пор величают и даже при неправильно введённом пароле ;)
...
Рейтинг: 0 / 0
Ошибка Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric
    #40128641
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Старый плюшевый мишка
Тебя это удивляет? Вроде бы очевидный факт природы.

А вот ни разу не нарывался, представь себе. С 2002г (о, Господи...). Практически всегда, если и изменял длину, то лишь увеличивая её. А когда чувствовал возможность потери данных при преобразовании - всегда обрабатывал данные "ручками".
...
Ну нифига ж себе, однако. "Несоздаваемый бэкап".

И, похоже, что даже коллега Yo! про такое не зал.
...
Рейтинг: 0 / 0
Ошибка Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric
    #40128674
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перед полным впадением в маразм панику, советую сначала попробовать это воспроизвести.
IB не предлагать.
...
Рейтинг: 0 / 0
Ошибка Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric
    #40128912
Nick00
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv, Для проблемной таблицы выдается значение 2.
Может кто-то и менял длину поля, но если меняли, то в сторону увеличения...
...
Рейтинг: 0 / 0
Ошибка Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric
    #40128959
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nick00,

теперь уже не узнать, в какую сторону меняли. Хотя, если есть древние бэкапы, можно посмотреть на размер столбца там. Если это кому-то нужно.
...
Рейтинг: 0 / 0
Ошибка Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric
    #40128964
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
Nick00,

теперь уже не узнать, в какую сторону меняли. Хотя, если есть древние бэкапы, можно посмотреть на размер столбца там. Если это кому-то нужно.
Не скажу за IB, но в FB это узнать легко и просто:
Код: sql
1.
2.
set blob all;
select * from rdb$formats where rdb$relation_id = NNN;
...
Рейтинг: 0 / 0
Ошибка Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric
    #40128977
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

- везде одинаково, и в иб и фб
- я выше уже давал запрос, его выполнили, там 2 формата в "проблемной таблице".

Так-то формат можно было попробовать "рашфировать", но это не для слабонервных.
...
Рейтинг: 0 / 0
Ошибка Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric
    #40128980
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
Так-то формат можно было попробовать "рашфировать", но это не для слабонервных.
А я для чего
Код: sql
1.
set blob all

написал ?
...
Рейтинг: 0 / 0
Ошибка Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric
    #40129454
Nick00
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvlad,
Интересно.
В этом запросе rdb$relation_id я так понимаю сравнивается с числом. Как узнать его для нужного поля нужной таблицы?
И ругается на строку
Код: sql
1.
set blob all;


сообщением Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 1, char 4.
blob.
...
Рейтинг: 0 / 0
Ошибка Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric
    #40129455
Nick00
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для исправления ситуации было решено в скрипте удалить новые строки после и перед кавычкой в текстовом редакторе.
...
Рейтинг: 0 / 0
Ошибка Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric
    #40129503
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nick00
В этом запросе rdb$relation_id я так понимаю сравнивается с числом. Как узнать его для нужного поля нужной таблицы?
Это ID таблицы, см rdb$relations

Nick00
И ругается на строку
Код: sql
1.
set blob all;

Это команда isql
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ошибка Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (2): Анонимы (1), Yandex Bot 7 мин.
Пользователи онлайн (8): Анонимы (5), Google Bot 1 мин., Bing Bot 1 мин., Yandex Bot 1 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]