SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Firebird, HQbird, InterBase » FB 4 Сервисы и кириллица (Внезапно! Странное поведение сервисов и баз, расположенных в папках содержащих кириллицу.)
icon11.gif  FB 4 Сервисы и кириллица [сообщение #2389] Fri, 26 May 2023 12:18 Переход к следующему сообщению
protector в настоящее время не в онлайне  protector
Сообщений: 4
Зарегистрирован: May 2023
Junior Member

Решил я тут воспользоваться новомодным OO Api и получить с его помощью статистику базы данных.
Не буду приводить весь код но во общем делаю так:
Подключаемся к сервисам.
    spb1:= Futl.getXpbBuilder(Fstatus, IXpbBuilder.SPB_ATTACH, nil, 0);
    spb1.insertString(Fstatus, isc_spb_user_name,PAnsiChar(AUserName));
    spb1.insertString(Fstatus, isc_spb_password, PAnsiChar(APassword));
    Fsvc := Fprov.attachServiceManager(Fstatus,
                                       'service_mgr',
                                       spb1.getBufferLength(Fstatus),
                                       spb1.getBuffer(Fstatus));
Запускаем сервис.
    spb2:= Futl.getXpbBuilder(FStatus, IXpbBuilder.SPB_START, nil, 0);
    spb2.insertTag(FStatus,isc_action_svc_db_stats);
    spb2.insertInt(FStatus, isc_spb_options, isc_spb_sts_hdr_pages);
    spb2.insertString(FStatus, isc_spb_dbname, PAnsiChar('C:\Temp\База тут\DB.FDB'));

    Fsvc.start(Fstatus,spb2.getBufferLength(Fstatus),	spb2.getBuffer(Fstatus));
И вот тут засада. Как видите путь к базе содержит кириллицу. В итоге получаю ошибку:
Can't open database file C:\TEMP\База тст\DB.FDB

Странно. Ну давайте тогда попробуем другой сервис, вдруг сработает. Ну, скажем свип.
    spb2:= Futl.getXpbBuilder(FStatus, IXpbBuilder.SPB_START, nil, 0);
    spb2.insertTag(FStatus,isc_action_svc_repair);
    spb2.insertInt(FStatus, isc_spb_options, isc_spb_rpr_sweep_db);
    spb2.insertString(FStatus, isc_spb_dbname, PAnsiChar('C:\Temp\База тут\DB.FDB'));

    Fsvc.start(Fstatus,spb2.getBufferLength(Fstatus),	spb2.getBuffer(Fstatus));
И всё работает без ошибок! Ладно, а теперь давайте сделаем так. При подключении укажем тэг.
  spb1.insertTag(Fstatus,isc_spb_utf8_filename);
Тогда в первом примере ошибки нет. Зато теперь есть во втором, со свипом!
Invalid connection string
-Cannot transliterate character between character sets

И вот вопрос: что за фигня? Почему такое разное поведение сервисов?
И да, чтобы всё работало во втором случае нужно выполнить преобразование строки в UTF8.
Но так ведь явно не должно быть. Бегло погуглив никакого объяснения этому не нашел, может плохо искал, не знаю.
Осторожно предположу, что это, таки, баг.
Re: FB 4 Сервисы и кириллица [сообщение #2390 является ответом на сообщение #2389] Fri, 26 May 2023 12:43 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 887
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
гы!
в топег приглашается SD.

[Обновления: Fri, 26 May 2023 12:44]

Известить модератора

Re: FB 4 Сервисы и кириллица [сообщение #2392 является ответом на сообщение #2390] Fri, 26 May 2023 14:47 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 411
Зарегистрирован: August 2022
Senior Member
/me приходит, осматривается и удаляется. Остальное порезано самоцензурой.

PS: В этой части леса столько багов, что на них нужно не ружжо, а пулемёт. И патроны. Бесконечные патроны.

[Обновления: Fri, 26 May 2023 15:01]

Известить модератора

Re: FB 4 Сервисы и кириллица [сообщение #2401 является ответом на сообщение #2392] Sat, 27 May 2023 17:54 Переход к предыдущему сообщению
Старый Плюшев в настоящее время не в онлайне  Старый Плюшев
Сообщений: 95
Зарегистрирован: August 2022
Географическое положение: Ленинград
Member
SD писал(а) Fri, 26 May 2023 14:47
/me приходит, осматривается и удаляется. Остальное порезано самоцензурой.

PS: В этой части леса столько багов, что на них нужно не ружжо, а пулемёт. И патроны. Бесконечные патроны.
А мож "Дружба"?
Предыдущая тема: Изменить тип поля
Следующая тема: ALTER SESSION RESET
Переход к форуму:
  


Текущее время: Thu Nov 21 16:30:47 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00640 секунд