Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FB2.5 после апдейта к UTF8 базу невозможно бакапнуть / 9 сообщений из 9, страница 1 из 1
25.10.2016, 16:57
    #39333760
svd
svd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FB2.5 после апдейта к UTF8 базу невозможно бакапнуть
апдейт базы для UTF8 делается не для всей базы, а для некоторых столбцов отдельных таблиц. проводятся следующие операции:

удаляются все триггера, вьюшки и процедуры.

автор
Код: plaintext
1.
2.
3.
4.
5.
6.
1) добавляется к таблице новый столбец TMP CHARACTER SET UTF8;
2) в этот столбец копируются данные из старого столбца;
3) старый столбец дропается;
4) создается новый с тем же именемс CHARACTER SET UTF8;
5) меняется позиция нового столбца со старым;
6) копируются данные из TMP в новый столбец;
7) дропается TMP.


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

При попытке бакапить базу выдается сообщение:
Код: plaintext
1.
2.
3.
4.
Arithmetic overflow or division by zero has occured.
arithmetic exception, numeric overflow, or string truncation.
string right truncation.
gds_$receive failed.
Exiting before completion due to error.


При этом сама база вроде как рабочая. Все данные читаются и все замечательно. Сначала такое сообщение выбрасывало после строчки обработки какогото индекса.
Попробовал для всех индексов применить 'SET STATISTIK INDEX' бакап сразу же выкидывает такое сообщение.

FB2.5
Все скриптовые операции производятся IBEScript и если сключить конвертацию столбцов , то все проходит замечательно.

В чем может быть засада?

PS:Все обновление делается в пакете. Применяется для роботов. Есть базы, которые просто великолепно данную операцию производят, но есть и вот с таким случаем. Нужно знать как лечить такую штуку на будущее и в чем собственно проблема.
...
Рейтинг: 0 / 0
25.10.2016, 17:03
    #39333767
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FB2.5 после апдейта к UTF8 базу невозможно бакапнуть
svd,

а чего не вот так

1) добавляется к таблице новый столбец TMP CHARACTER SET UTF8;
2) в этот столбец копируются данные из старого столбца;
3) старый столбец дропается;
4) переименовываем столбец TMP на имя которое было до этого
5) меняется позиция нового столбца
...
Рейтинг: 0 / 0
25.10.2016, 17:17
    #39333784
svd
svd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FB2.5 после апдейта к UTF8 базу невозможно бакапнуть
Симонов Денис,

Можно и так, но суть от этого не меняется. Хотя будет немного побыстрее.
...
Рейтинг: 0 / 0
25.10.2016, 17:33
    #39333812
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FB2.5 после апдейта к UTF8 базу невозможно бакапнуть
svd,

а после каждого шага подтверждение транзакции делается? Или только одна транзакция на все шаги?
...
Рейтинг: 0 / 0
25.10.2016, 22:43
    #39333979
svd
svd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FB2.5 после апдейта к UTF8 базу невозможно бакапнуть
Симонов Денис,

Конечно после каждого. Иначе не находит новые столбцы.
...
Рейтинг: 0 / 0
25.10.2016, 22:55
    #39333984
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FB2.5 после апдейта к UTF8 базу невозможно бакапнуть
svdВ чем может быть засада?
Да в чём угодно, собственно. Новый столбец короче старого. Старый с кодировкой NONE и т.д.
и т.п. Надо смотреть какие именно данные отказываются читаться.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.10.2016, 02:08
    #39334016
svd
svd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FB2.5 после апдейта к UTF8 базу невозможно бакапнуть
Dimitry Sibiryakov,

Из такой поврежденной базы я делал в IBExper полную выгрузку данных в скрипт. При этом ошибок о нечитаемости данных, а в часности arithmetic exception не наблюдалось. Беглый просмотр полученного скрипта на какие либо ошибки тоже ничего не дал.

Завтра попробую увеличить длинну временного столбца и сравнить размеры данных.
...
Рейтинг: 0 / 0
26.10.2016, 09:56
    #39334120
svd
svd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FB2.5 после апдейта к UTF8 базу невозможно бакапнуть
Dimitry Sibiryakov,

Дмитрий, еще вопрос: как можно узнать, какие данные отказывается читать?
...
Рейтинг: 0 / 0
26.10.2016, 10:11
    #39334141
o_v_a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FB2.5 после апдейта к UTF8 базу невозможно бакапнуть
Так ты это и на простом селекте вычислишь после перезаливки в TMP.
Делай полный фетч. Если не триллиарды записей, ручками двигаясь по резалт-сету увидишь последнюю удачно отфетченную запись.

Далее в оригинальной базе с той же сортировкой ищешь эту последнюю удачную и после неё будет искомое.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FB2.5 после апдейта к UTF8 базу невозможно бакапнуть / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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