Гость
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Ошибки в результатах сравнения БД с различием в типе домена [206] / 2 сообщений из 2, страница 1 из 1
25.04.2018, 12:38
    #39635968
Ошибки в результатах сравнения БД с различием в типе домена [206]
В двух БД (Firebird 1.5) отличается тип домена в поле таблицы. Например, первая БД:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SET SQL DIALECT 3;
SET NAMES WIN1251;
SET CLIENTLIB 'C:\Work\FirebirdBinLnk\fbclient.dll';

CREATE DATABASE 'LOCALHOST:C:\Work\ErrorDemos\IbExpert\206\Err206-1.fdb'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 16384
DEFAULT CHARACTER SET WIN1251;

CREATE DOMAIN "Dom1" AS SMALLINT;

CREATE DOMAIN "Dom2" AS SMALLINT;

CREATE TABLE "Table" (
    "Field1"  "Dom1" NOT NULL,
    "Field2"  "Dom2"
);


Вторая БД:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SET SQL DIALECT 3;
SET NAMES WIN1251;
SET CLIENTLIB 'C:\Work\FirebirdBinLnk\fbclient.dll';

CREATE DATABASE 'LOCALHOST:C:\Work\ErrorDemos\IbExpert\206\Err206-2.fdb'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 16384
DEFAULT CHARACTER SET WIN1251;

CREATE DOMAIN "Dom1" AS SMALLINT;

CREATE DOMAIN "Dom2" AS VARCHAR(10) CHARACTER SET WIN1251 COLLATE PXW_CYRL;

CREATE TABLE "Table" (
    "Field1"  "Dom1" NOT NULL,
    "Field2"  "Dom2" COLLATE PXW_CYRL
);


В результате сравнения этих БД получается неверный сценарий:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
/* Server version: WI-V6.3.3.4870 Firebird 1.5 
   SQLDialect: 3. ODS: 10.1. Forced writes: On. Sweep interval: 20000.
   Page size: 16384. Cache pages: 2048 (32768 Kb). Read-only: False. */
SET CLIENTLIB 'C:\Work\FirebirdBinLnk\fbclient.dll';
SET NAMES WIN1251;

SET SQL DIALECT 3;

CONNECT 'LOCALHOST:C:\Work\ErrorDemos\IbExpert\206\Err206-2.fdb' USER 'SYSDBA' PASSWORD 'masterkey';

SET AUTODDL ON;

/******************************************************************************/
/****                           Altering domains                           ****/
/******************************************************************************/
UPDATE RDB$FIELDS
SET RDB$FIELD_TYPE = 7,
    RDB$FIELD_LENGTH = 2,
    RDB$CHARACTER_LENGTH = NULL,
    RDB$FIELD_SCALE = NULL,
    RDB$FIELD_PRECISION = NULL,
    RDB$FIELD_SUB_TYPE = NULL
WHERE RDB$FIELD_NAME = 'Dom2';

UPDATE RDB$FIELDS SET RDB$COLLATION_ID = NULL
 WHERE RDB$FIELD_NAME = 'Dom2';

COMMIT WORK;

/******************************************************************************/
/****                           Altering tables                            ****/
/******************************************************************************/
ALTER DOMAIN Dom2
  TYPE "Dom2" CHARACTER SET WIN1251;


При сравнении БД «в обратную сторону» аналогичные ошибки в сценарии.

Тестовые БД прилагаются.
...
Рейтинг: 0 / 0
27.04.2018, 16:15
    #39637588
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибки в результатах сравнения БД с различием в типе домена [206]
Исправил.
...
Рейтинг: 0 / 0
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Ошибки в результатах сравнения БД с различием в типе домена [206] / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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