Сравнении структур баз

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

Ответить
SerjP
Сообщения: 24
Зарегистрирован: 09 июл 2008, 15:01

Сравнении структур баз

Сообщение SerjP » 21 окт 2008, 09:20

Стоит FB 2.1.1.17910.
При сравнении структур баз - "разработчик"/"боевая"(3й диалект использую IBExpert(- на других базах все ok)) получается ошибочный скрипт - проблема в "русских" текстах
Фрагмент скрипта -
if (vDateParamIsn is null) then execute procedure sys_error('Не найден коэффициент метода. '||:pmethodcoefisn);
-- Определяем дату расчета коэффициента VDate

База создана в FB 2.1, проблем с разработкой нет(при подключении указана кодировка WIN1251, перекомпиляция, редактирование процедур проходит нормально)
В чем может быть проблема? (смотрел http://www.ibase.ru/firebird/21/metadata_charset.htm, select * from rdb$check_metadata ошибок не дает, backup/restore проходит нормально. Смущает один момент - в скрипте отсутсвует SET NAMES WIN1251; )

SerjP
Сообщения: 24
Зарегистрирован: 09 июл 2008, 15:01

Re: Сравнении структур баз

Сообщение SerjP » 21 окт 2008, 10:41

Ситуация прояснилась. Базу создавал не я, при ее создании указали кодировку NONE, а все подключения ставят WIN1251. Разработка идет нормально, но при сравнении структур - оно идет в NONE - с соответствующим результатом. Сейчас воспроизвел эту ситуацию(при создании указал NONE, при подключении WIN1251 - создал процедуру с русским текстом, сделал копию базы, поменял текст, сравнил структуры и получил тот же результат - не читаемый русский текст). Теперь вопрос как исправить эту проблему - пока только вариант - через извлечение метаданных, создание с "правильной" кодировкой и переливании данных. Или есть еще варианты?
И самое гадкое -нигде невидно, что база была создана в NONE

Attid
Спец
Сообщения: 377
Зарегистрирован: 14 ноя 2006, 09:58

Re: Сравнении структур баз

Сообщение Attid » 21 окт 2008, 12:28

я бы пересоздал базу и перелил данные , чтоб в будущем меньше спотыкаться.

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

Re: Сравнении структур баз

Сообщение kdv » 21 окт 2008, 18:13

И самое гадкое -нигде невидно, что база была создана в NONE
видно в rdb$database. там поле специальное есть, в котором указано, в каком чарсете создана база. Но вообще это фигня, потому что подсоединяться можно с любым чарсетом, и создавать объекты тоже с любым чарсетом.
читай www.ibase.ru/devinfo/ibrusfaq.htm

а перевод на 1251 - да, базу в скрипт, если небольшая, и пересоздать.

SerjP
Сообщения: 24
Зарегистрирован: 09 июл 2008, 15:01

Re: Сравнении структур баз

Сообщение SerjP » 22 окт 2008, 07:32

Да. поменял в rdb$database значение поля RDB$CHARACTER_SET_NAME с NONE на WIN1251 - IBExpert стал нормальный скрипт делать :) Но все равно - пересоздал базу и перелил данные - так спокойнее :) Получается что IBExpert при сравнении баз цепляется к ним не как указано в настройках подключении, а как прописано rdb$database.

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

Re: Сравнении структур баз

Сообщение kdv » 22 окт 2008, 12:44

Получается что IBExpert
нет.

Ответить