powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / После добавления новой таблицы из скрипта ошибка при попытке работать с этой таблицей
16 сообщений из 16, страница 1 из 1
После добавления новой таблицы из скрипта ошибка при попытке работать с этой таблицей
    #39974266
Несколько баз работают с 2017 года без backup-restore. Firebird 3.0 Windows 64.
Клиент работает через DevArt UNIDAC.
Периодически выполняются SQL скрипты для обновления структуры базы данных.
При выполнении очередного скрипта

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE TABLE DOC_PACKS (
    ID           INTEGER NOT NULL,
    IDDOC        N_INTEGER,
    IDROW        N_INTEGER,
    IDLABEL      N_INTEGER,
    QUANTITY     NMONEY,
    BARCODE      CHAR200,
    IDOWNER      INTEGER,
    IDINOWNER    INTEGER,
    RECORDCOLOR  VARCHAR(20),
    RECORDFONT   VARCHAR(20),
    STATUS       N_INTEGER
);

ALTER TABLE DOC_PACKS ADD PRIMARY KEY (ID);

CREATE INDEX DOC_PACKS_BARCODE ON DOC_PACKS (BARCODE);
CREATE INDEX DOC_PACKS_IDDOC ON DOC_PACKS (IDDOC);
CREATE INDEX DOC_PACKS_IDROW ON DOC_PACKS (IDROW);




На нескольких базах была ошибка:
Код: sql
1.
2.
<unsuccessful metadata update
cannot create index RDB$PRIMARY444>



Теперь часть баз из множества находится в таком состоянии:
Все что работало ранее работает
Select по этой таблице выдает ошибку. Если удалить и создать заново её или создать любую другую таблицу то ошибки

1.
Код: sql
1.
2.
table  is not defined.
table id 599 is not defined.



2.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
IBM	Mon Jun 29 21:12:44 2020
	Database: BASE.FDB
	Error: Page 24225 wrong type (expected pointer encountered data)


IBM	Mon Jun 29 21:12:44 2020
	Database: BASE.FDB
	Error: Pointer page 24225 {sequence 0} inconsistent in table NEW_TABLE (599)



Такое ощущение что базы "устали" от изменения метаданных за эти три года
Дальнейшие попытки добавлять метаданные приводят к ошибкам выявляемым gfix -v -full

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
IBM	Mon Jun 29 21:12:44 2020
	Database: BASE.FDB
	Error: Pointer page 24225 {sequence 0} inconsistent in table NEW_TABLE (599)


IBM	Mon Jun 29 21:12:44 2020
	Database: BASE.FDB
	Warning: Page 177 is an orphan


IBM	Mon Jun 29 21:12:44 2020
	Database: BASE.FDB
	Warning: Page 179 is an orphan


IBM	Mon Jun 29 21:12:44 2020
	Database: BASE.FDB
	Validation finished: 2 errors, 2 warnings, 0 fixed



В таблице RDB$RELATIONS RDB$FORMAT и RDB$FIELD_ID для этой таблицы и для всех вновь создаваемых содержат null
Gfix не помог а backup-restore лечит эту проблему, но баз много все их перебэкапить хлопотно.
Может кто то уже сталкивался и есть какое то решение по ремонту?

Спасибо.
...
Рейтинг: 0 / 0
После добавления новой таблицы из скрипта ошибка при попытке работать с этой таблицей
    #39974278
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вадим Мещеряков
Такое ощущение что базы "устали" от изменения метаданных за эти три года
Коммиты надо делать между операторами ddl.
Между созданием таблицы и сознанием пк на нее, например.
Без коммитов - может сработать, может не сработать - это штатное поведение.
...
Рейтинг: 0 / 0
После добавления новой таблицы из скрипта ошибка при попытке работать с этой таблицей
    #39974315
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вадим Мещеряков,

если есть воспроизводимый пример - было бы хорошо разобраться что там происходит.
...
Рейтинг: 0 / 0
После добавления новой таблицы из скрипта ошибка при попытке работать с этой таблицей
    #39974436
hvlad,

Воспроизвести такую поломку - взять нормальную базу выполнить скрипты и база сломалась не получилось.

Есть уже некондиционная база, в ней добавление любой таблицы дает ошибку. После перебэкапа все будет норм.
Такая база поможет понять причину?
...
Рейтинг: 0 / 0
После добавления новой таблицы из скрипта ошибка при попытке работать с этой таблицей
    #39974439
YuRock,

Тут проблема не в том что таблица не добавилась, а в том что теперь добавление любой таблицы создает таблицы по которым в RDB$Relations null в двух полях и эти таблицы не работают.
...
Рейтинг: 0 / 0
После добавления новой таблицы из скрипта ошибка при попытке работать с этой таблицей
    #39974449
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вадим Мещеряков
Есть уже некондиционная база, в ней добавление любой таблицы дает ошибку. После перебэкапа все будет норм.
Такая база поможет понять причину?
Надеюсь - да
...
Рейтинг: 0 / 0
После добавления новой таблицы из скрипта ошибка при попытке работать с этой таблицей
    #39974565
hvlad,

Куда можно ссылку на скачивание базы отправить 40 мб в rar (что бы всем не светилась)?
...
Рейтинг: 0 / 0
После добавления новой таблицы из скрипта ошибка при попытке работать с этой таблицей
    #39974581
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вадим Мещеряков,

hvlad at users sf net
...
Рейтинг: 0 / 0
После добавления новой таблицы из скрипта ошибка при попытке работать с этой таблицей
    #39974595
hvlad,

Отправил
...
Рейтинг: 0 / 0
После добавления новой таблицы из скрипта ошибка при попытке работать с этой таблицей
    #39974598
hvlad,

Посмотрел в истории выполнения скриптов обновлений.

Высланная база не выдала ошибки на двух таких скриптах (с коммитом транзакции между ними)

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE TABLE COLLECTPRICE_CACHE (
    ID             INTEGER NOT NULL,
    DATEDOC        DATE,
    IDDIVISION     N_INTEGER /* N_INTEGER = INTEGER DEFAULT 0 */,
    IDPRICEREGION  N_INTEGER /* N_INTEGER = INTEGER DEFAULT 0 */,
    IDUSER         N_INTEGER /* N_INTEGER = INTEGER DEFAULT 0 */,
    IDSOURCE1      N_INTEGER /* N_INTEGER = INTEGER DEFAULT 0 */,
    IDSOURCE2      N_INTEGER /* N_INTEGER = INTEGER DEFAULT 0 */,
    IDSOURCE3      N_INTEGER /* N_INTEGER = INTEGER DEFAULT 0 */,
    IDSOURCE4      N_INTEGER /* N_INTEGER = INTEGER DEFAULT 0 */,
    IDOWNER        INTEGER,
    IDINOWNER      INTEGER,
    RECORDCOLOR    VARCHAR(20),
    RECORDFONT     VARCHAR(20),
    STATUS         N_INTEGER /* N_INTEGER = INTEGER DEFAULT 0 */
);



Код: sql
1.
ALTER TABLE COLLECTPRICE_CACHE ADD PRIMARY KEY (ID);



но эта таблица COLLECTPRICE_CACHE не работает и все следующие попытки создать другие таблицы были неудачны
...
Рейтинг: 0 / 0
После добавления новой таблицы из скрипта ошибка при попытке работать с этой таблицей
    #39974612
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вадим Мещеряков
таблица COLLECTPRICE_CACHE не работает
Всегда ставили в ступор такие фразы.

PS ссылку получил, спасибо, разбираться буду чуть позже
...
Рейтинг: 0 / 0
После добавления новой таблицы из скрипта ошибка при попытке работать с этой таблицей
    #39974700
hvlad
Всегда ставили в ступор такие фразы.


В таблицу нельзя добавить строки, посмотреть строки, удалить строки. Лучше фразы чем "таблица не работает" я не нашел :)
Картинку всего одну можно приложить. Пусть будет эта
...
Рейтинг: 0 / 0
После добавления новой таблицы из скрипта ошибка при попытке работать с этой таблицей
    #39974711
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вадим Мещеряков
Лучше фразы чем "таблица не работает" я не нашел :)
Вместо "не работает" всегда лучше приводить ДОСЛОВНЫЙ текст ошибки
...
Рейтинг: 0 / 0
После добавления новой таблицы из скрипта ошибка при попытке работать с этой таблицей
    #39974786
YuRock
Коммиты надо делать между операторами ddl.
Между созданием таблицы и сознанием пк на нее, например.
Без коммитов - может сработать, может не сработать - это штатное поведение.

Анализ логов работы скриптов показал что было два скрипта, в первом создавалась таблица, второй скрипт создавал Primary Key и индексы. Между скриптами был Commit транзакции, плановое отключение от базы новый коннект к базе.
...
Рейтинг: 0 / 0
После добавления новой таблицы из скрипта ошибка при попытке работать с этой таблицей
    #39974810
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вадим Мещеряков
YuRock
Коммиты надо делать между операторами ddl.
Между созданием таблицы и сознанием пк на нее, например.
Без коммитов - может сработать, может не сработать - это штатное поведение.

Анализ логов работы скриптов показал что было два скрипта, в первом создавалась таблица, второй скрипт создавал Primary Key и индексы. Между скриптами был Commit транзакции, плановое отключение от базы новый коннект к базе.
Да я уже понял, что тут проблема по-серьезней, и одна надежда на то, что у Влада получится ее повторить.

А с виду было похоже - у меня подобное проявлялось не раз, когда коммит всё решал.
...
Рейтинг: 0 / 0
После добавления новой таблицы из скрипта ошибка при попытке работать с этой таблицей
    #39977021
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вадиму я ответил подробно, тут хочу сказать, что проблема похожа на

http://tracker.firebirdsql.org/browse/CORE-5677

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


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