Пропажа данных после restore.

Access Violation, некорректное выполнение запросов или вызовов API, ошибки утилит командной строки, в общем все, что вам мешает работать

Модераторы: kdv, dimitr

_so_
Сообщения: 144
Зарегистрирован: 04 ноя 2004, 22:17

Пропажа данных после restore.

Сообщение _so_ » 23 ноя 2004, 14:29

IB 7.1 sp2.
Иногда после restore базы, в одной из таблиц пропадают данные в одной колонок VarChar(30).
Раньше не было такого замечено.
Стало наблюдаться после-того как в таблицу добавил computed by поля.
На других таблицах вроде этого не происходит.
Может кто-то с этим сталкивался?

Гость

Re: Пропажа данных после restore.

Сообщение Гость » 15 дек 2004, 12:10

А при ресторе ругани никакой нету?

_so_
Сообщения: 144
Зарегистрирован: 04 ноя 2004, 22:17

Сообщение _so_ » 16 дек 2004, 18:05

Нет. Тут возникла идея. Возможно ошибка происходит когда конект происходит без сетки. Сегодня пробовал через localhost все нормально. Но точно не уверен.

_so_
Сообщения: 144
Зарегистрирован: 04 ноя 2004, 22:17

Сообщение _so_ » 01 мар 2005, 16:31

Проблема с IB вроде пропала. А вот с FB она повторилась и не помог localhost FB (1.5.1.4481).
Данные пропадают в тех таблицах, где есть computed by поля типа blob причем во всех, а не в одной как было в IB.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 01 мар 2005, 16:32

computed by blob??? это сильно. я думаю, что хоть и парсер допускает такое, но вообще бы неплохо запретить. приведи-ка примерчик?

_so_
Сообщения: 144
Зарегистрирован: 04 ноя 2004, 22:17

Сообщение _so_ » 02 мар 2005, 12:33

Причем здесь парсер. Вообще-то все рабоает. Проблема имена с restore. Все селекты работают изумительно кроме небольших утечек памяти в IB7.1 sp2. Так как на колонку выполняется хранимая процедура.
Пример трудно объяснить. Например удобно в одну колонку собирать информацию из других таблиц связаных с главной. Можно было бы строкой, но информации может быть много.
Другой пример. Изначально был блоб содержащий информацию. Потом этот блоб разнесли в другую таблицу (один ко многим). Но для совместимости работы старого кода сделали copued by атрибут. Все красиво работает.

_so_
Сообщения: 144
Зарегистрирован: 04 ноя 2004, 22:17

Сообщение _so_ » 02 мар 2005, 12:35

И вообще это предположение. Так как точно неизвестно. Но всетаки хотелось бы разобраться почему опреция buckup-restore приводит к потере данных.

_so_
Сообщения: 144
Зарегистрирован: 04 ноя 2004, 22:17

Сообщение _so_ » 04 мар 2005, 12:13

Модет все таки кто нибудь ответит про пропажу данных в FB. При каких случаях это происходит и так далее. А то при buckup и restore никаких ошибок нет, а данные пропадают. Это вообщето не хорошо. При больших размерах БД и количестве таблиц можно не отследить сразу что пропало. Отсюда вывод FB использовать вообще нельзя.

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 04 мар 2005, 13:20

А нечего отвечать. Ни у кого не было пропажи данных после рестора. Это абсолютно ненормально. Но диагноз по твоему стуку в подвале поставить невозможно.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 04 мар 2005, 15:10

computed by столбцы вообще то не хранятся. поэтому там и пропадать-то нечему. нужно проверять данные исходные, а с ними, думаю, все абсолютно в порядке. И уже потом сочинить воспроизводимый тест, который будет показывать "пропадание" "данных" в computed by столбцах.

_so_
Сообщения: 144
Зарегистрирован: 04 ноя 2004, 22:17

Сообщение _so_ » 04 мар 2005, 16:08

По вашему я совсем. Данные пропадают в нормальгых колонках. Например типа VarChar(30). А про computed by я писал, что в этих таблицах он используется. Читать нужно внимательнее.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 04 мар 2005, 16:36

тогда - что за данные пропадают, в каком количестве? ковыряли-ли ранее размер этого столбца (сколько записей в rdb$formats в исходной базе для этой таблицы?)?

напрягись, дай нам какой-нибудь намек на воспроизводимость данной ситуации.

_so_
Сообщения: 144
Зарегистрирован: 04 ноя 2004, 22:17

Сообщение _so_ » 05 мар 2005, 12:09

Я понимаю, что сложно. Но послать базу в 4 гига это сложно.
Вот описание таблицы в которой пропадют данные.

Код: Выделить всё

CREATE DOMAIN BIN AS BLOB SUB_TYPE 0 SEGMENT SIZE 80;
CREATE DOMAIN BOOL AS SMALLINT;
CREATE DOMAIN GUID AS INTEGER;
CREATE DOMAIN IQTY AS INTEGER;
CREATE DOMAIN SDATE AS TIMESTAMP;
CREATE DOMAIN SNAME AS VARCHAR(30) CHARACTER SET WIN1251 COLLATE PXW_CYRL;

/* Table: FOLDERS, Owner: SYSDBA */

CREATE TABLE FOLDERS 
(
  ID	GUID NOT NULL,
  CLASSID	GUID,
  SENIORID	GUID,
  NAME	SNAME,
  ORD	IQTY,
  LASTCHANGE	SDATE,
  VALUECLASS	GUID,
  ASQL	BIN,
  COND	BIN,
  CONDINT	BIN,
  EXTINFO	BIN,
  PROPS	BIN,
  READONLY	BOOL,
  GROUPIDX	IQTY,
  ASQL2	BIN,
  COND2	BIN,
  HELPCTX	IQTY,
  OWNER	 COMPUTED BY ((select REFS from GetRefObjects(Folders.ID, 41122, 25))),
  OWNERWR	 COMPUTED BY ((select REFS from GetRefObjects(Folders.ID, 41129, 25))),
 PRIMARY KEY (ID)
);
SET TERM ^ ;
Пропадают значения в колонке Name (После restrore становятся пустые)

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 05 мар 2005, 13:34

а если взять метаданные (gbak -m) , и хоть чуть данных налить? ситуация воспроизводится?

а где тут блобы computed by? я тут в computed by вижу нерекомендуемый селект, да еще из процедуры.

_so_
Сообщения: 144
Зарегистрирован: 04 ноя 2004, 22:17

Сообщение _so_ » 05 мар 2005, 14:07

Вот как раз хранимая процедура и возвращает blob.
Попробую.

_so_
Сообщения: 144
Зарегистрирован: 04 ноя 2004, 22:17

Сообщение _so_ » 05 апр 2005, 16:06

Появилось время.
Да сделал gbak -m и встаивил данные только в 2 таблицы.
Ситуация воспроизовдится. Ошибок никаких нет. При этом в быкапе базы данные похоже есть.
Могу передать архивы:
Начальной базы 1 Mb
backup базы: 200 Kb
Начальная + backup + конечная: 2.2 Мб.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 05 апр 2005, 17:05

запакуй все в rar, потом на support сообщи размер файла. скажу, слать или нет :) только прицепи в txt или тексте письма описание проблемы.

_so_
Сообщения: 144
Зарегистрирован: 04 ноя 2004, 22:17

Сообщение _so_ » 05 апр 2005, 17:45

Так что слать?
Я же написал:
Могу передать архивы:
1. Начальной базы 1 Mb
2. backup базы: 200 Kb
3. Начальная + backup + конечная: 2.2 Мб.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 05 апр 2005, 19:18

блин, я не прошу все это вместе в виде отдельно трех штук. если конечный размер ВСЕХ файлов запакованных в архив rar-ом 2.2 мега (или меньше), то шли мне. адрес, как бы, не секрет. на support не надо, люди ругаться будут.

а вообще достаточно исходной базы.

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 05 апр 2005, 21:06

Дим, не забудь поделиться результатом :wink:

Ответить