powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FB 2.5.5 проблема со столбцами UTF8
61 сообщений из 61, показаны все 3 страниц
FB 2.5.5 проблема со столбцами UTF8
    #39988870
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

Есть база данных, созданая с чарсетом ISO8859_1. В новой версии развитие нашей программы был сделан переход на UTF8. Поэтому в программе установки запускается специальный скрипт, который с помощью команды alter ссоздает временный столбец, в него копирует данные из столбца с кодировкой ISO8859_1, удаляет старый столбец, создает новый, копирует данные из временного столбца и удаляет временный столбец.
Таким образом обрабатывается не одна таблица, а довольно много.

В чем возникла проблема: обнаружилось, что у некоторых таблиц такие обновления проходят не так гладко. Например если в конвертируемом столбце есть многобайтные символы типа 'µ', национальных символов каждой страны и есть подозрения на символ '%'.
Вместимость столбца 100 байт (VARCHAR(100) CHARACTER SET UTF8)
Строка содержит допустим 40 байт и спецсимвол. Если же сделать select прямо из таблицы, то получим Arithmetic exception. Иногда прямой селект проходит нормально, но вот в связанной view выкидывает Arithmetic exception.
При попытке сделать insert или update с такими данными получаем Arithmetic exception.

Самое непонятное в этом то, что в одних таблицах все нормально с этим, в других постоянно проблема. Приходится после апдейта проводить подобную конвертацию руками повторно. Что посоветуете делать?

Используется FB 2.5.5 как SuperServer, под Win7 или Win10.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39988876
AltHasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svd,

Временно увеличьте "Вместимость столбца" в 4 раза. А после конвертации можете вернуть обратно размер поля. Проверено и не раз.
Удачи!
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39988878
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
varchar(100) это байты и "паспортная" вместимость такого столбца - 25 юникодных символов .
Ну и 2.5. 5 - странно, как минимум.
Суперсервер - тоже странно, но, может быть, у вас тот редкий сценарий когда это осмысленно.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39988883
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AltHasp,

Так и делается. временный столбец содержит 1000 байт. изначально на тестах я и основной столбец увеличил как и временный - для программы это не критично тем, что внутри используются форматированные данные фиксированной длинны (записи типа record). Но вот шеф настоял, что бы все вернулось в порядок. Пришлось в скрипт при обратном копировании добавить substring.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39988890
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

все бы хорошо, но несходится с логикой: при вмстимости столбца 100 символов, 39 символов идут как однобайтные и 'µ' идет в двухбайтной кодировке.

по поводу смены версии сервера вопрос трудный. Для этого нужны веские основания. Вероятно так и произойдет, если мне удастся доказать, что новая версия как раз и исправляет подобные проблемы. Используется то, что длительное время тестировалось.
Клиентов около тысячи, обновления проводим не мы, а лучше сказать "другая фирма", которую невозможно заставить просто так обновить сервера базы данных у клиентов. Поэтому этим занимается программа установки, которую мого раз тестируют, пока она попадет в отдел поддержки.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39988892
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
varchar(100) это байты и "паспортная" вместимость такого столбца - 25 юникодных символов .


С чего это вдруг? varchar(100) - это 100 символов, RDB$FIELD_LENGTH у такого поля будет 400.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39988908
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svd
по поводу смены версии сервера вопрос трудный.
Версии??? С каких пор "выпуск (обновлений)" стал "сменой версии"?

P.S.
Про "требуется бэкап-рестор" - в курсе, но сколько их на все выпуски?
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39988910
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert,

это в теории. На практике, проводя конвертацию, я создавал временные столбцы сначала той же длины, что и оригинал. В результате получал при update исключение arithmetic exception. потом tmp увеличил вдвое, но нашлись пользователи у которых и 200 не прокатывало. Тогда уже задал для tmp 1000 и все пошло более менее нормально, пока у французов не нашлись данные, где помогло только 3000 и времени на решение было 5 минут. Естественно уже 1000 была в официальном пакете обновлений, а этих французов пометили как особых личностей.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39988911
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AltHasp
svd,

Временно увеличьте "Вместимость столбца" в 4 раза. А после конвертации можете вернуть обратно размер поля. Проверено и не раз.
Удачи!


как вы это делаете? команду можете указать, чтоб внести ее в скрипт?
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39988916
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svd
В чем возникла проблема: обнаружилось, что у некоторых таблиц такие обновления проходят не так гладко. Например если в конвертируемом столбце есть многобайтные символы типа 'µ', национальных символов каждой страны и есть подозрения на символ '%'.
В ISO8859_1 нет и быть не может никаких многобайтных символов.

svd
Вместимость столбца 100 байт (VARCHAR(100) CHARACTER SET UTF8)
Это 100 символов, не 100 байт.

svd
На практике, проводя конвертацию, я создавал временные столбцы сначала той же длины, что и оригинал. В результате получал при update исключение arithmetic exception. потом tmp увеличил вдвое, но нашлись пользователи у которых и 200 не прокатывало. Тогда уже задал для tmp 1000 и все пошло более менее нормально, пока у французов не нашлись данные, где помогло только 3000 и времени на решение было 5 минут.
Звучит как ужас-ужас. Кто-то где-то что-то делал не так.

Воспроизводимый пример поможет разобраться в этом безобразии.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39988952
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Версии??? С каких пор "выпуск (обновлений)" стал "сменой версии"?

P.S.
Про "требуется бэкап-рестор" - в курсе, но сколько их на все выпуски?


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

ПС: Обновление - довольно сложный процесс. И базы данных (их две)- только некоторая часть из этого. С базами делается следущие манипуляции: удаление всех зависимостей (триггеров, процедур, функций), изменение для utf8, сравнение базы со скриптом на изменение метаданных, исполнение всяких вспомогательных скриптов, меняющие данные в таблицах, Бэкап - рестор баз данных.
И только в конце, опционально, идет смена сервиса базы данных, и то, если человек это кликнул - по умолчанию это не активно.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39988981
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot hvlad#22181328]
svd
Звучит как ужас-ужас. Кто-то где-то что-то делал не так.

Воспроизводимый пример поможет разобраться в этом безобразии.


Выглядит это так:

Код: plsql
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.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
       ...
        execute statement 'alter table ARTIKEL add tmp_utf varchar(10) CHARACTER SET UTF8';
        COMMIT;
        update ARTIKEL set tmp_utf = DFORM where 1=1;
        COMMIT;
        execute statement 'alter table ARTIKEL drop DFORM';
        COMMIT;
        execute statement 'alter table ARTIKEL add DFORM char(3)  CHARACTER SET UTF8';
        COMMIT;
        execute statement 'alter table ARTIKEL alter DFORM position 3';
        COMMIT;
        update ARTIKEL set DFORM=substring(tmp_utf from 1 for 3) where 1=1;
        COMMIT;
        execute statement 'alter table ARTIKEL drop tmp_utf';
        COMMIT;

        execute statement 'alter table ARTIKEL add tmp_utf varchar(20) CHARACTER SET UTF8';
        COMMIT;
        update ARTIKEL set tmp_utf = PEINHEIT where 1=1;
        COMMIT;
        execute statement 'alter table ARTIKEL drop PEINHEIT';
        COMMIT;
        execute statement 'alter table ARTIKEL add PEINHEIT varchar(10)  CHARACTER SET UTF8';
        COMMIT;
        execute statement 'alter table ARTIKEL alter PEINHEIT position 4';
        COMMIT;
        update ARTIKEL set PEINHEIT=substring(tmp_utf from 1 for 10) where 1=1;
        COMMIT;
        execute statement 'alter table ARTIKEL drop tmp_utf';
        COMMIT;

        for select 'DROP INDEX '||trim(i.rdb$index_name) from rdb$indices i  LEFT JOIN rdb$index_segments isg ON (isg.rdb$index_name = i.rdb$index_name)  WHERE (i.rdb$relation_name = 'ASB_FAIL')and(rdb$field_name = 'NAME')   into :SQL do begin ibec_Progress(SQL); execute statement :SQL;  end
        execute statement 'alter table ASB_FAIL add tmp_utf varchar(200) CHARACTER SET UTF8';
        COMMIT;
        update ASB_FAIL set tmp_utf = NAME where 1=1;
        COMMIT;
        execute statement 'alter table ASB_FAIL drop NAME';
        COMMIT;
        execute statement 'alter table ASB_FAIL add NAME varchar(50)  CHARACTER SET UTF8';
        COMMIT;
        execute statement 'alter table ASB_FAIL alter NAME position 2';
        COMMIT;
        update ASB_FAIL set NAME=substring(tmp_utf from 1 for 50) where 1=1;
        COMMIT;
        execute statement 'alter table ASB_FAIL drop tmp_utf';
        COMMIT;

  ....





К сожалению, последнюю таблицу, которая виновата была, пока я был в коллеги выкинули из списка и просто ее дропают. В ней данные, которые частично востанавливаются из скрипта, если они нужны. В данный момент это помогло, но сама практика не очень хорошая.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39988987
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svdЕсть база данных, созданая с чарсетом ISO8859_1.

svdесть многобайтные символы типа 'µ', национальных символов каждой страны

svdСамое непонятное в этом то, что в одних таблицах все нормально с этим, в других постоянно
проблема.

А теперь вопрос на засыпку: национальные символы каких стран представлены в ISO8859_1 и
каких стран - занесены в поле?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989014
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svd,

я не знаю, что такое "execute statement" в какой тр-ции\коннекте оно выполняется и зачем оно тут вообще нужно.

Мне кажется подозрительным использование одного и того же имени tmp_utf для всех потребностей.
Кроме того, такой подход не позволяет конвертировать более одного поля на таблицу за один раз и заставляет делать несколько апдейтов вместо одного.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989303
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

А теперь вопрос на засыпку: национальные символы каких стран представлены в ISO8859_1 и
каких стран - занесены в поле?


Изначально были только Европейские (Испанский, Французский, Немецкий, Итальянский, Турецкий, Польский, Португалский, Нидерландский). потом 6 лет назад встал вопрос о китайском и арабском. Потому сделали перевод только необходимых столбцов для этого.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989314
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad
svd,

я не знаю, что такое "execute statement" в какой тр-ции\коннекте оно выполняется и зачем оно тут вообще нужно.

Мне кажется подозрительным использование одного и того же имени tmp_utf для всех потребностей.
Кроме того, такой подход не позволяет конвертировать более одного поля на таблицу за один раз и заставляет делать несколько апдейтов вместо одного.


Именно так. Весь перенос делался не за один день, а по мере перевода разных часте программ и Интерфейсов на Юникод (миграция с Дельфи 2007 на ХЕ8). Как только провека работоспособности интерфейсов подтверждалась протоколами и рапортами клиентов, внесенные изменения фиксировались. Я опубликовал только часть скрипта. На самом деле меняются много таблиц. И только пятая часть из списка имеет более одного столбца с utf8.

Разработка ведется разными людьми, сегодня задание на перевод интерфейса может быть у меня, завтра у другого сотрудника. Начальник отдела зставляет все делать по шагам (и я, например, исходя из жизненного опыта, нахожу это правильным). В случае проблемы с одним столбцом придется откатывать все изменения. Кроме того ему не нравится "коренные изменения типа оптимизации кода" - тогда трудно найти "что пошло не так" после очередного внесения изменений. Обновление программ (и структур баз) производим не мы. Гораздо удобней получить рапорт, что именно такой то столбец в такой то таблице не прошел, чем неверны все данные в таблице.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989317
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

Еще к тому же мен кажется странным, что клиенты проде из одного региона, у одних такой эффект может проявиться, у других нет. Компьютеры у них у всех одного промышленного типа, различаться могут по процессорам и памятью на борту только. Операционка со всеми программами устанвливается из единого образа - по идее отличий быть не должно в принципе. но происходит.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989323
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svd,

много слов, но ничего полезного для понимания причин исходной проблемы, увы.

Итого: без воспроизводимого примера мне тут сказать больше нечего.
Ну и 2.5.5 давно нужно заменить на 2.5.9 (как минимум).
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989324
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svd,

я бы посоветовал 2.5.5 обновить до 2.5.9, или по крайней мере посмотреть release notes, были-ли какие-то баги исправлены между этими версиями в отношении юникода. По крайней мере в 2.5.1 однозначно были баги с сортировкой
(см. раздел "Регистронезависимый поиск" в http://www.ibase.ru/unicode_faq/ , там красным выделено, и указаны 3 бага).

Насчет "ошибок после переноса столбцов" - у вас там точно это через дисконнект-коннект делается? Вдруг висел какой-то коннект, который не давал обновить метаданные в памяти. У суперсервера 2.5 кэш метаданных общий.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989329
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svdЕще к тому же мен кажется странным, что клиенты проде из одного региона, у одних такой
эффект может проявиться, у других нет.

Ничего странного. У одних в базе есть буквы, не укладывающиеся в ISO 8859-1, у других - нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989337
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
svd,

я бы посоветовал 2.5.5 обновить до 2.5.9, или по крайней мере посмотреть release notes, были-ли какие-то баги исправлены между этими версиями в отношении юникода. По крайней мере в 2.5.1 однозначно были баги с сортировкой
(см. раздел "Регистронезависимый поиск" в http://www.ibase.ru/unicode_faq/ , там красным выделено, и указаны 3 бага).


Вроде смотрел, но не все: с версии 2.5.5 и выше - вроде бы ничего подобного не нашел, хотя нашел в бэг-треккере одиин рапорт о проблемах имен хранимых процедур при utf8. (версия 2.5.7) Но вроде как не подтвердилась, после перехода на другую версию.

kdv

Насчет "ошибок после переноса столбцов" - у вас там точно это через дисконнект-коннект делается? Вдруг висел какой-то коннект, который не давал обновить метаданные в памяти. У суперсервера 2.5 кэш метаданных общий.


Обновление производится специальной программой на копиях баз данных - копируются в локально доступные папки, перед каждым шагом сервис стартует, после выполнения шага сервис останавливается. Правда выполнение скриптов производится в одном шаге запуска сервиса, а вот выполнение каждого скрипта в отдельной конекции. После операции бэкап-рестор подготовленные базы копируются вместе с другими файлами на свое рабочее место(этот шаг выполняется в не контекста обновления баз и если базы не обновились, то и опреация не производится, и обновление не применяется на рабочей машине). То есть в период обновления у программы обновления единичный(но не монопольный) доступ к базам.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989341
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Ничего странного. У одних в базе есть буквы, не укладывающиеся в ISO 8859-1, у других - нет.


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
MACH4_CTRL 16.05.20 22:34:01,221 U_Table_PackDetails_Qpriv.InsertQuery:
Arithmetic overflow or division by zero has occurred.SQL error state =22001
Arithmetic exception, numeric overflow, or string truncation.
String right truncation.
START EXCEPTION
QPRIV{
SELECT:
select * from PackDetails  where (FAID=-1) and (PackungsID=664212)
INSERT:
insert into PackDetails
(FAID,PackungsID,Artikelcode,PackungsArt,Breite,Hoehe,Tiefe,Bmess,Hmess,Tmess,Gewicht,FPMenge,IstMenge,Nmittel,N,DatumsFall,AktivesDatum,EinlagDatum,WaWiDatum,VerfallDatum,AuslagDatum,UmlagDatum,Name,Barcode,KartonID,LieferantID,LieferscheinID,Seriennummer,Charge,DM_Code)
  Values ( -1,664212,'00274097',3,44.1,43.4,78.1,-1.0,-1.0,-1.0,0.000,0,0,0,0,2,'1.11.2020 0:0:0.0','16.5.2020 22:34:1.23','1.1.1980 0:0:0.0','1.11.2020 0:0:0.0','1.1.1980 0:0:0.0','1.1.1980 0:0:0.0','Clarithromycin i.v. 500 mg DsF 1ST','',-1,1,70,'','','')



Я вот как то не нашел в данном инсерте ни одного многобайтного символа.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989345
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Ничего странного. У одних в базе есть буквы, не укладывающиеся в ISO 8859-1, у других - нет.


Дополнение: Причем столбец Name имеет UTF8 кодировку. Остальные ISO
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989354
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svdПричем столбец Name имеет UTF8 кодировку.

А вот тут-то и грабельки: в него вполне могли запихать больше букв, чем разрешено,
поскольку Firebird в старых версиях проверяет только лимит в байтах, а в новых - ещё и в
буквах.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989368
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

НЕ может быть. Такие грабельки уже проверяли и исправляли. Только не в данном случае.

В столбце объявлено 100 символов utf8, в запросе заносится 36. Столбец Artikelcode имеет размер 20 ISO8859_1. там 8 цифер всего. Остьльные строковые значения пустые. Где внесены даты и время - используются соотвественные столбцы

Код: plsql
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.
CREATE TABLE PACKDETAILS (
    FAID            INTEGER NOT NULL,
    PACKUNGSID      INTEGER NOT NULL,
    ARTIKELCODE     VARCHAR(20) NOT NULL,
    PACKUNGSART     INTEGER,
    BREITE          FLOAT,
    HOEHE           FLOAT,
    TIEFE           FLOAT,
    BMESS           FLOAT,
    HMESS           FLOAT,
    TMESS           FLOAT,
    GEWICHT         FLOAT,
    FPMENGE         INTEGER DEFAULT 0,
    ISTMENGE        INTEGER DEFAULT 0,
    NMITTEL         INTEGER,
    N               INTEGER,
    DATUMSFALL      INTEGER,
    AKTIVESDATUM    TIMESTAMP,
    EINLAGDATUM     TIMESTAMP,
    VERFALLDATUM    TIMESTAMP,
    WAWIDATUM       TIMESTAMP,
    AUSLAGDATUM     TIMESTAMP,
    UMLAGDATUM      TIMESTAMP,
    NAME            VARCHAR(100) CHARACTER SET UTF8,
    BARCODE         VARCHAR(20),
    KARTONID        INTEGER,
    LIEFERANTID     INTEGER,
    LIEFERSCHEINID  INTEGER,
    SERIENNUMMER    VARCHAR(30),
    CHARGE          VARCHAR(20),
    DM_CODE         VARCHAR(255),
    R$ID            BIGINT
);
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989382
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svdВ столбце объявлено 100 символов utf8, в запросе заносится 36. Столбец Artikelcode имеет
размер 20 ISO8859_1. там 8 цифер всего. Остьльные строковые значения пустые. Где внесены
даты и время - используются соотвественные столбцы

На этой таблице запрос выше отработал без ошибок. Что подозрительно, в нём поля WaWiDatum
и VerfallDatum помянены местами относительно DDL. Что намекает, что таблица может быть не
совсем той.

Другая возможность - триггера на ней, в которых и происходит ошибка.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989412
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

На этой таблице запрос выше отработал без ошибок. Что подозрительно, в нём поля WaWiDatum
и VerfallDatum помянены местами относительно DDL. Что намекает, что таблица может быть не
совсем той.

да, он отрабатывает на все 100%. Коллеги исправили ошибку, удалив таблицу командой drop и пересоздав ее через DDL-команду. То есть по логике не внесли никаких изменений в метаданные.

Dimitry Sibiryakov

Другая возможность - триггера на ней, в которых и происходит ошибка.

Проверил зависимости - вообще никаких нет.

Спасабо, Дмитрий, за вашу помощь. Все это уже становится гаданьем на кофейной гуще. Дождусь следующего инцидента с таблицей и попытаюсь вытащить базу данных для исследований. Тогда опубликую еще раз сообщения. Пока ограничусь отпиской, что FB-Team рекомендует сменить версию сервиса.

PS to Kdv: Дмитрий еще раз перечитал ваши рекомендации по переходу на Юникод. Хоть мы используем "старый способ", но отличие у наших баз только одно: хоть в скриптах создания базы и описано set names и create databse default character set как UTF8 , но в реальности из-за миграции данных они остаются ISO8859_1 . Это может играть какую то негативную роль?
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989427
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
del
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989498
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svdно в реальности из-за миграции данных они остаются ISO8859_1
в смысле?
- я не помню, чтобы set names как-то влияло на чарсет создаваемого столбца. Это чарсет коннекта, не более того.
- чарсет у БД определяет только чарсет создаваемых тексто-блобовых столбцов, если у них при этом чарсет не указан.
Никто не запрещает указать у базы чарсет utf8, а потом создать столбец с чарсетом ISO8859_1.
- изменение чарсета у базы никак не влияет на уже созданные столбцы. Чарсет у базы - это "дефолт чарсета для вновь создаваемых столбцов".
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989501
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svdЭто может играть какую то негативную роль?

Это означает, что разработчики БД и приложения не совсем понимают что они делают и как это
работает. Да, приход северного лиса в таких обстоятельствах - вопрос времени.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989665
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Это означает, что разработчики БД и приложения не совсем понимают что они делают и как это
работает. Да, приход северного лиса в таких обстоятельствах - вопрос времени.


Судя по этому сообщению 22182137 , то разработчики именно правильно ориентировались. Основной тип текстовых данных - ISO8859_1. UTF8 выбран как вспомогательный, потому что предоставляет возможность мультибайтовых национальных символов умещать в ограниченных объемах записей уже стандартированных интерфейсов. По сравнению с использованием UTF16 это заметно.

С другой стороны замена всех символьных типов на UTF8 может привести к увеличению объема базы данных. В стандартной комплектации робота, основная база расположена на том же компьютере, где и сам робот. в зависимости от подключенного оборудования, процессор может быть от Celeron (управление одним роботом) до Core I7, Память от 1GB до 4GB. С этой стороны есть ли какие то рекомендации по использованию низкопроизводительных процессоров и небольшого объема рабочей памяти?
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989668
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В огороде бузина ...
Если вам требуется хранить "разноязычные" тексты - UTF8. При чём тут память и процессор???
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989680
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
В огороде бузина ...
Если вам требуется хранить "разноязычные" тексты - UTF8. При чём тут память и процессор???


Всегда лучше узнать мнение специалистов. О том, какая машина будет использоваться решаю не я. Для подачи совета нужен веский аргумент. Сейчас аргументом является "это дешево и работает". Когда на одной машине работает PLC, программы с графикой и стримингом видео с вебкамеры, компилированные в Embarcadero (а Дельфи создает совсем не компактный код), да еще и база данных, вопрос становится актуальным. В данный момент база сконфигурирована так, что сразу ведет запись на диск. Но может оказаться так, что проблемы вызваны именно нехваткой памяти.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989685
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторОсновной тип текстовых данных - ISO8859_1. UTF8 выбран как вспомогательный
азанах такое?
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989687
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svdПо сравнению с использованием UTF16 это заметно.

по сравнению с чем? Вы в курсе что такой кодировки в Firebird нет совсем. В последних версиях Interbase вроде есть, но как по мне она на фиг не сдалась.

Про процессор. Вы ведь в курсе что если у вас чарсет коннекта и столбца отличаются, то Firebird будет делать преобразование кодировки на лету. Это будет жрать процессор. Как по мне, то в современных условиях нужны только две кодировки UTF-8 и OCTETS для бинарных данных. Остальные оправданы разве что из за совместимости со старым ПО, которое UNICODE не поддерживает. Объём БД на диске как по мне не так критичен, во первых он не вырастет кратно, ибо записи всё равно хранятся сжатыми, а во вторых в вашем случае не каждый символ будет занимать более 1 байта.

Про память. Да потребление памяти скорее всего вырастет, но не сильно. Главный совет конфигурируйте Firebird под конкретную машину. Переходите на 3.0, там можно использовать SS с общим страничным кешем, что позволит сильно экономить потребление памяти, когда пользователей много.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989712
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
svdПо сравнению с использованием UTF16 это заметно.


по сравнению с чем? Вы в курсе что такой кодировки в Firebird нет совсем. В последних версиях Interbase вроде есть, но как по мне она на фиг не сдалась.

Про процессор. Вы ведь в курсе что если у вас чарсет коннекта и столбца отличаются, то Firebird будет делать преобразование кодировки на лету. Это будет жрать процессор. Как по мне, то в современных условиях нужны только две кодировки UTF-8 и OCTETS для бинарных данных. Остальные оправданы разве что из за совместимости со старым ПО, которое UNICODE не поддерживает. Объём БД на диске как по мне не так критичен, во первых он не вырастет кратно, ибо записи всё равно хранятся сжатыми, а во вторых в вашем случае не каждый символ будет занимать более 1 байта.

Про память. Да потребление памяти скорее всего вырастет, но не сильно. Главный совет конфигурируйте Firebird под конкретную машину. Переходите на 3.0, там можно использовать SS с общим страничным кешем, что позволит сильно экономить потребление памяти, когда пользователей много.

Большое спасибо! Дельные рекомендации. В данный момент чарсет коннекта utf8, а столбцов с ISO на порядок больше, чем UTF8. Полный перевод всей базы на UTF8 потребует использования дополнительной программы обновления.

Переход на 3.0 уже раз обсуждался - из-за хранения пользователей в самой базе. Вот еще один аргумент скорейшего перехода. Пользователь используется всего один - sysdba. Хотя есть конфигурации с репликациями - там еще один добавляется. Но одновременных соединений от 39 до 60. Так же зависит от конфигурации: заспускаются различные треды, каждый со своим коннектом. Еще пара вопросов: при миграции с 2.5 на 3 много нюансов нужно учитывать при переводе базы? Есть ли где то готовое описание подобного перевода?
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989714
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svd,

по миграции специфики мало. Архитектуры у 2.5 и 3.0 все те же самые, разве что суперсервер распараллеливается по ядрам, и локальное подключение (без имени сервера) это ембеддед, а не xnet.
А так - миграция как обычно - берем скрипт базы, запускаем на 3.0, проверяем. вычищаем все ошибки, составляем скрипт для модификации 2.5. модифицируем, делаем б/р. потом проверяем приложение на совместимость запросов.
По несовместимостям - читать README.incompatibilities.txt.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989717
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svd,

с 2.5 на 3.0 не так уж много надо переделывать. Все несовместимости описаны в Firebird 3.0 Release Notes в главе Compatibility Issues.
Поскольку у вас практически только SYSDBA, то и геморроя с переносом пользователей не возникнет. Возможна некоторая коррекция процедур и триггеров, которые используют AS CURSOR, если для выражений в секции SELECT не задан алиас. Ну и желательно повычищать запросы где tcnm помесь явных и неявных JOIN.

svdПереход на 3.0 уже раз обсуждался - из-за хранения пользователей в самой базе.

А вот тут есть нюансы, особенно при работе с сервисами. Ну например при восстановлении БД, вам всё равно придётся пользоваться общесерверным SYSDBA
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989720
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svd,

вот на 4.0, как мне кажется, перейти будет намного сложнее из-за новых типов данных. Там конечно есть специальный параметр в конфиге и всякие SET BIND OF, но это временные решения. Лучше пилить приложение для поддержки новых типов, и править запросы со всякими CURRENT_TIMESTAMP, CURRENT_TIME
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989724
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
вот на 4.0, как мне кажется, перейти будет намного сложнее из-за новых типов данных.
с чего бы вдруг, если унаследованные приложения о них понятия не имет
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989725
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо за советы!
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989730
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
с чего бы вдруг, если унаследованные приложения о них понятия не имет
Например потому, что mon$-таблицах поменялись некоторые типы данных и надо (будет) крутить настройки совместимости для четвёрки в целом или "со стороны клиента".
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989750
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийс чего бы вдруг, если унаследованные приложения о них понятия не имет

а с того, что без выставленных настройках совместимости запросы с CURRENT_TIMESTAMP, CURRENT_TIME будут выдавать типы TIMESTAMP WITH TIMEZONE и TIME WITH TIMEZONE. Тут либо править эти запросы и менять на LOCALTIMESTAMP, LOCALTIME, либо ставить режим совместимости, либо юзать SET BIND OF. Ну это я ещё в тройке CURRENT_TIMESTAMP на LOCALTIMESTAMP поменял, когда их ввели.

Далее всякие SUM, AVG и выражения с BIGINT/NUMERIC(18, x) могут неожиданно вернуть тип INT128/NUMERIC(38, x) о которых приложение не в курсе. Опять же либо включаем режим совместимости, либо SET BIND OF.

Так что, если не использовать режим совместимости, то компоненты доступа надо дорабатывать серьёзно.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989756
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Мимопроходящий
с чего бы вдруг, если унаследованные приложения о них понятия не имет
Например потому, что mon$-таблицах поменялись некоторые типы данных и надо (будет) крутить настройки совместимости для четвёрки в целом или "со стороны клиента".
*зачем* прикладной аппликухе туда вообще лазить?
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989757
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
а с того, что без выставленных настройках совместимости
ну и где тут геморрой?
выставил и забыл об этом навсегда.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989766
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
*зачем* прикладной аппликухе туда вообще лазить?
"Прикладные апликухи" бывают сильно разные.

P.S.
<тут вам не Арея> упираться, что проблемы нет.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989769
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
"Прикладные апликухи" бывают сильно разные.
продемонстрируй насцущную необходимость
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989771
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
продемонстрируй насцущную необходимость
Отстрелить любителей уйти с работы, оставив на заблокированном рабочем столе "недосмотренный" грид.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989773
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

да не, при включённых настройках совместимости всё будет работать. Другое дело, что рано или поздно захочется воспользоваться новыми возможностями, и вот тогда поддержку новых типов, таки придётся пилить. И сделать это не так же просто как с BOOLEAN в 3.0
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989784
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Мимопроходящий
продемонстрируй насцущную необходимость
Отстрелить любителей уйти с работы, оставив на заблокированном рабочем столе "недосмотренный" грид.
это ты называешь прикладухой?
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989785
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
да не, при включённых настройках совместимости всё будет работать.
Речь не про то, что нельзя "побырому" смигрировать на четвёрку. "Для посмотреть" или "потому, что перспективно".
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #39989793
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисКак по мне, то в современных условиях нужны только две кодировки UTF-8 и OCTETS для
бинарных данных.

Причём вторая тоже сомнительна из-за появления (VAR)BINARY, который может поменять свою
внутреннюю сущность. Это сейчас он просто хак из-за того, что половина движка во имя
взадсовместимости не поддерживает подтипы для строковых полей.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #40015941
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

К сожалению, на форуме нельзя прикрепрять файлы более 150килобайт. В линке база с непонятными артефактами .
В ней есть проекция VW_ARTIKEL_PG. Если ее фетчить до конца, то выкинется Arithmetic exception. Связанные с ней таблицы фенчатся нормально. Если ее удалить и создать заново, то ошибка исчезает.
Вопрос, что могло привести к подобным дефектам? И это единичный случай (Именно на этой проекции).
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #40015945
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svdчто могло привести к подобным дефектам?

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

Нет, баз я не качал и не открывал.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #40061956
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
повторилась ошибка с греческой буквой µ.

База данных лежит тут.

В таблице ARTIKEL имеет следующую структуру:
Код: plsql
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.
35.
36.
37.
38.
39.
40.
41.
CREATE TABLE ARTIKEL (
    ARTIKELCODE                  VARCHAR(20) NOT NULL,
    GENERICID                    INTEGER DEFAULT 0,
    NAME                         VARCHAR(100) CHARACTER SET UTF8,
    DFORM                        CHAR(30) CHARACTER SET UTF8,
    PEINHEIT                     VARCHAR(10) CHARACTER SET UTF8,
    PACKSIZE                     INTEGER DEFAULT 0,
    HERSTELLER                   VARCHAR(20),
    STRENGTH                     VARCHAR(30),
    FLAVOUR                      VARCHAR(10),
    BARCODE                      VARCHAR(20),
    CD                           INTEGER DEFAULT 0,
    ISTANZAHL                    INTEGER,
    FREIANZAHL                   INTEGER,
    MINMENGE                     INTEGER,
    MAXMENGE                     INTEGER,
    GNAME                        VARCHAR(100) CHARACTER SET UTF8,
    MINLAGERTEMP                 INTEGER,
    MAXLAGERTEMP                 INTEGER,
    FLAGS                        VARCHAR(11),
    MAXSCHACHT                   INTEGER,
    MINSCHACHT                   INTEGER DEFAULT 0,
    MINPACKMD                    INTEGER DEFAULT 0,
    AHT                          FLOAT DEFAULT 0.0,
    SAISON                       VARCHAR(3) DEFAULT '',
    UNFIT                        VARCHAR(11) DEFAULT 'M' NOT NULL,
    BREITE                       INTEGER,
    HOEHE                        INTEGER,
    TIEFE                        INTEGER,
    GEWICHT                      FLOAT,
    DELETEFLAG                   VARCHAR(1),
    STOCKLOCATIONID              VARCHAR(50) CHARACTER SET UTF8,
    MACHINELOCATION              VARCHAR(50) CHARACTER SET UTF8,
    SERIALNUMBERSINCEEXPIRYDATE  TIMESTAMP DEFAULT '01.01.1980',
    LASTUPDATE                   TIMESTAMP DEFAULT '01.01.1980',
    SBTYPE                       SMALLINT,
    SBDZ                         FLOAT,
    MAXSCHACHTBER                FLOAT,
    LAST_MS_CHANGE               TIMESTAMP,
    R$ID                         BIGINT
);




отображает все без проблем для записи с ARTIKELCODE=5012616173004 (первая запись, если сортировать по имени).
Таблица используется в проеции VW_ARTIKEL_PGЮ
Код: plsql
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.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
CREATE OR ALTER VIEW VW_ARTIKEL_PG(
    NAME,
    FORM,
    PACKSIZE,
    ARTIKELCODE,
    ISTANZAHL,
    FREIANZAHL,
    FLAGS,
    GENERICKEY,
    MAXSCHACHT,
    MINMENGE,
    MAXMENGE,
    MINLAGERTEMP,
    MAXLAGERTEMP,
    BARCODE,
    CD,
    AHT,
    UNFIT,
    DELETEFLAG,
    SERIALNUMBERSINCEEXPIRYDATE)
AS
select
    case coalesce(a.GName,'')
      when ('') then a.Name
      else a.GName
    end || ' ' || coalesce(a.STRENGTH,''),
    a.DForm As Form,
    a.Packsize,
    a.artikelcode,
    a.IstAnzahl,
    a.FreiAnzahl,
    a.Flags,
    g.generickey,
    MaxSchacht,
    a.MinMenge,a.MaxMenge,a.MinLagerTemp,a.MaxLagerTemp,a.barcode,
    coalesce(a.CD,0),
    a.Aht,
    a.unfit,
    a.deleteflag,
    A.serialnumbersinceexpirydate
  from ARTIKEL a, GENERICS g
    where a.Artikelcode not in('','-1','0','?') and
          a.Artikelcode not starting with '@'   and
          a.genericid = g.id
;



Если фетчить проецию VW_ARTIKEL_PG, то выкидывает ошибку, хотя таблица отображается без каких либо проблем:
cannot transliterate character between character set:
Код: plsql
1.
2.
3.
SQLCode: -802
SQLState:22018
GDSCode:335544321



Firebird 2.5.9.27139
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #40061966
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svd,

Вот это тоже фетчится без проблем ?
Код: sql
1.
2.
3.
4.
5.
6.
select
    case coalesce(a.GName,'')
      when ('') then a.Name
      else a.GName
    end || ' ' || coalesce(a.STRENGTH,'')
  from ARTIKEL a
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #40061980
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

да, запрос отобрадает без проблем. Прямо в первой позиции находится проблемная запись без каких либо Arithmetics exception.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #40062013
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svd,

а если чарсет коннекта не utf8, а ISO8859_1 ?

Насколько я вижу, в полях GName и Name последняя буква (греческое мю ?) не является буквой кодировки ISO8859_1, отсюда проблема транслитерации.

VW_ARTIKEL_PG была создана в коннекте с чарсетом ISO8859_1 и поэтому содержит строковые литералы в этом чарсете.
Вот соотв. часть BLR (21 - это charset id для ISO8859_1):
Код: plaintext
1.
2.
3.
                        blr_eql,
                           blr_field, 1, 11, 'A','R','T','I','K','E','L','C','O','D','E',
                           blr_literal, blr_text2, 21,0, 0,0,

Когда COLEASECE сравнивает GName (UTF8) с пустой строкой в ISO8859_1 - оно приводит GName к ISO8859_1 и получает ошибку транслитерации.
Не буду сейчас выяснять, к какому чарсету нужно было кого приводить, но сейчас оно вот так работает.
Чтобы это исправить, достаточно пересоздать VW_ARTIKEL_PG в коннекте с чарсетом UTF8.
Или явно указывать чарсет литералов (_utf8 ''), но это нехорошо выглядит, как по мне.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #40062023
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13.04.2021 13:11, hvlad пишет:
> Или явно указывать чарсет литералов (_utf8 ''), но это нехорошо выглядит, как по мне.

вполне нормально оно выглядит.
мы для литералов пользуем _win1251.
и не нужно перекодировать метаданные при миграции.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #40062066
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

Спасибо большое. Это вносит некоторое понимание, почему после перекомпиляции вдруг начинает работать. Хотя нужно проверить всю цепочку наших апдейтов - в один момент происходит удаление всех триггеров, проекций и процедур и потом восстановление удаленных из скрипта. Вероятно там как раз соединение идет по ISO8859, а не по UTF8.
...
Рейтинг: 0 / 0
FB 2.5.5 проблема со столбцами UTF8
    #40062103
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svd,

непонятно, зачем в таблице половина строк без кодировки (или с дефолтной кодировкой БД), и половина - с UTF8.
Такое впечатление, что нечем развлечься. :-)
Если делается перевод на utf8, то переводить надо все метаданные.

p.s. про приколы типа DELETEFLAG VARCHAR(1) я уж вообще молчу.
...
Рейтинг: 0 / 0
61 сообщений из 61, показаны все 3 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FB 2.5.5 проблема со столбцами UTF8
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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