Форум программистов, компьютерный форум, киберфорум
Firebird/InterBase
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 17.10.2011
Сообщений: 10

Interbase SMP 2009 в Windows Server 2019 ошибка сохранения EXCEPTIONS

23.01.2024, 09:12. Показов 1290. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня!

При переносе базы interbase 2009 со старой тачки на новую с новой Windows Server 2019 возникла следующая проблема.
Перестали в клиенте программы, написанной еще в D7, появляться exceptions от БД из хранимок.
Начал смотреть, разбираться, решил перекомпилировать хранимку, которая должна отдавать текст warning от exceptions и обнаружил, что при компиляции хранимки получаю ошибку, мол "arithmetic exception, numeric overflow, or string truncation.
Cannot transliterate character between character sets.".
Долго не мог понять, где вдруг появились кодировки, которые не может компилятор обработать. Методом исключения нашел, что такие места вызывают куски кода, где происходит проверка условия и по нему выкидывается exceptions на клиент. Попробовал отредактировать текст самого exceptions и в ответ получил вот такое:
"This operation is not defined for system tables.
unsuccessful metadata update.
MODIFY EXCEPTION failed.
arithmetic exception, numeric overflow, or string truncation.
Cannot transliterate character between character sets."

Причем под более старой версии Windows 7 х64 или Windows Server 2008 х64 такой проблемы само собой не наблюдалось. Понимаю, что большая разница в версиях системы и могли появиться более весомые изменения в системной кодировке по умолчанию или иных настройках. Плюс версия самой базы уже старенькая. Но кодировка, где хранятся сообщения, имеет значение "None", как и collate. Даже не unicode_fss, как большинство остальных полей в системных таблица. Пробовал менять кодировку и collate у этого поля в таблице rdb$exceptions. Не помогло.

Может кто-то сталкивался с подобным и сможет подсказать как это решить?
Или тут уже ничего не поделать и пора переходить на более новую версию Interbase? 2020 к примеру.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.01.2024, 09:12
Ответы с готовыми решениями:

Вход в панель управления MS Exchange Server 2019 на Windows Server 2019
Здравствуйте, ребята! У меня возникла следующая проблема. Я только разбираюсь в работе MS Exchange Server 2019. Установил его на...

Windows Server 2019 powershell ошибка
Здравствуйте. Помогите советом пожалуйста у пользователей время от времени выходит окно powershell и сразу закрывается подскажите...

Контроллер AD Windows Server 2019 в домене Windows Server 2012. Проблема с синхронизацией sysvol и netlogon
Всем доброго ..... Помогите решить проблему, плиз. Имеется доменная сеть, было два контроллера AD на Windows Server 2012 std, ...

8
Модератор
 Аватар для D1973
9902 / 6440 / 2454
Регистрация: 21.01.2014
Сообщений: 27,335
Записей в блоге: 3
23.01.2024, 11:07
Цитата Сообщение от mad_smoker82 Посмотреть сообщение
пора переходить на более новую версию Interbase?
Однозначно пора. Вот только почему IB? А почему не Firebird?
1
184 / 37 / 8
Регистрация: 14.04.2019
Сообщений: 238
23.01.2024, 12:14
А какая вообще кодовая страница для строковых данных?

Добавлено через 4 минуты
Пардон, невнимательно читал. Кодировку none придется переделывать. И это отдельная задача.
Новые версии сервера тут вряд ли помогут.
Берешь бэкап gbk и восстанавливаешь с изменением кодировки. Но это отдельная тема. В интернете полно рекомендаций,
но базы у всех разные.
1
0 / 0 / 0
Регистрация: 17.10.2011
Сообщений: 10
23.01.2024, 16:39  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
Однозначно пора. Вот только почему IB? А почему не Firebird?
Потому что система разрабатывалась с начала 2000-х и ib был выбран, как наиболее подходящий. Потом, как мне рассказывали, были попытки перенести это на fb, когда тот появился. Но на тот момент он был еще в зачаточном состоянии и не обеспечивал всех потребностей) По причине отсутствия у MySQL хранимок на нее так же не был совершен порт в другое время. А сейчас вроде и fb хорош, и ib подтянулся с новыми версиями, и MySQL может хранимки, но порт затребует времени массу. Таблиц не так много 130-150, хранимок >1500, объем базы почти 22 гига. Плюс система на delphi 7 в несколько десяток или сот тысяч строк кода. Поэтому порт могу сделать, но постоянно возникающие задачи по дальнейшему развитию этой системы не дадут это сделать достаточно быстро))) там по сути за все эти годы выросла своя CRM завязанная с кучей других систем в месте, где я работаю)

Добавлено через 3 минуты
Цитата Сообщение от DedFriend Посмотреть сообщение
Пардон, невнимательно читал. Кодировку none придется переделывать. И это отдельная задача.
Новые версии сервера тут вряд ли помогут.
Берешь бэкап gbk и восстанавливаешь с изменением кодировки. Но это отдельная тема. В интернете полно рекомендаций,
но базы у всех разные.
Да, там же у системных таблиц свои причуды) В частности имя exception в unicode_fss, а сам текст без определенной кодировки. То есть пиши на чем хочу, а клиентская часть потом сама разберется. Либо при этом текст пытается перекодироваться в кодировку той системы, где все это счастье лежит.

То есть даже так. Ну перенос-то я и делал через backup/restore. Значит нужен будет повторный restore, только с изменением кодировки. Спасибо, попробую поискать в нете инфо в этом ключе.
0
0 / 0 / 0
Регистрация: 17.10.2011
Сообщений: 10
24.01.2024, 15:59  [ТС]
Заметил еще странности с этой базой.
Есть системная таблица rdb$database, где в поле RDB$CHARACTER_SET_NAME по идее указана кодировка, которая была выбрана при создании базы. Я пару баз создал тестовых, указав в первый раз кодировку NONE, во второй WIN1251. В этих базах в этой системной таблице в этом поле были соответствующие значения. Причем в системных таблицах RDB$ некоторые поля таки имеют по умолчанию кодировку NONE, т.е. это не зависит от выбранной кодировки при создании.
Однако, когда посмотрел rdb$database у рабочей базы, то в поле RDB$CHARACTER_SET_NAME просто было NULL. Что меня озадачило сильнее))))
У пользовательских таблиц в базе кодировка при создании указывалась WIN1251 и у полей varchar тоже. Поэтому там-то вопросов нет.
Просто получается, а где именно кодировку менять то надо? То что у самой базы там стоит null это треш конечно. У системных таблиц для полей varchar кодировка NONE это похоже норма. Хотя после других баз с которыми работал, это странно конечно.

В моем случае наверно только, если попробовать создать новую базу с корректным выбором кодировки WIN1251, после извлечь метадата из рабочей и поместить в новую. А потом уже и данные перенести из рабочей в новую. И после проверить будет ли появляться ошибка при попытке отредактировать exception и соответственно будет ли ошибка при попытке скомпилировать процедуру из-за таких exception под windows 10/windows server 2019. Потому что под версиями ниже такой ошибки я не наблюдал.
0
0 / 0 / 0
Регистрация: 17.10.2011
Сообщений: 10
24.01.2024, 16:21  [ТС]
Извиняюсь, надо было сразу приложить скрины.
Собственно вот, что я вижу, когда пытаюсь сохранить exception.


Та же самая ошибка появляется, когда пытаюсь скомпилировать процедуру, в которой есть условие с exception.

Комментирую кусок с exception и компиляция проходит нормально.

Собственно вот поле character set из системной таблицы rdb$database


А вот структура системной таблицы exception.


Ровно точно такая же структура у этой таблицы, когда создается база с нормальным указанием кодировки по умолчанию.
Дело возможно конечно не в этом, а не дает сохранить возможно по другой причине.
0
184 / 37 / 8
Регистрация: 14.04.2019
Сообщений: 238
25.01.2024, 00:11
Вручную менять значения полей у системных таблиц - гнилое занятие. Я когда-то тоже пробовал, но ничего хорошего не получилось
0
0 / 0 / 0
Регистрация: 17.10.2011
Сообщений: 10
25.01.2024, 00:53  [ТС]
Цитата Сообщение от DedFriend Посмотреть сообщение
Вручную менять значения полей у системных таблиц - гнилое занятие. Я когда-то тоже пробовал, но ничего хорошего не получилось
Я вручную даже непытаюсь сменить кодировку в rdb$database)
Да и копание в системных таблицах дело интересное, но лучше в плане изучения конечно.
Хотя иногда и бью себя по рукам за то, что скопировать права с одного пользователя на другого гораздо быстрее через RDB$USER_PRIVILEGES в один запрос, чем лопатить портянки с разрешениями на все соответствующие таблицы и процедуры. Тем более, когда у тебя "над душой" стоят и ждут, что ты сделаешь это в мгновение ока)

А exception редактируется из соответствующего раздела в ibexpert
Название: 2024-01-25_02-45-20.png
Просмотров: 46

Размер: 5.9 Кб
0
0 / 0 / 0
Регистрация: 17.10.2011
Сообщений: 10
29.01.2024, 12:44  [ТС]
Создавал чистую базу с корректным указанием кодировки базы. Excpetions на русском просто не воспринимает. Ни создание, ни редактирование.
Обновил interbase до версии 2020 и проблема ушла.
Правда подраспухла база немного при развертывании из бэкапа, но зато теперь ошибок нет.
Тестирую работу старой программы с новой версией IB и замечаю, что все стало шевелиться гораздо быстрее.

В принципе вопрос можно считать закрытым тогда)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.01.2024, 12:44
Помогаю со студенческими работами здесь

Ошибка 0x00000709 при добавлении принтера общего доступа на windows server 2019
Всем добрый день) Уже сталкивался с подобной проблемой год назад, тогда в сети было найдено решение в лице удаление обновления безопасности...

Сервер условной пересылки. Ошибка между двумя компьютерами. Windows Server 2019
Во время настройки сервера условной пересылки, одна виртуальная машина не может связаться с другой виртуальной машиной. Сетевые...

Скрипт PowerShell работал в Windows Server 2008, но не работает в Windows Server 2019
Добрый день. Был написан скрипт для добавления новых пользователей через PowerShell, он успешно работал на Windows Server 2008. Был...

Использование SQL Server на Windows Server 2019 в VirtualBox
Добрый час! Необходимо зайти в сервис SQL, который расположен на одном домене, учетной записью, которая принадлежит другому домену. Отмечу,...

FTP server in Windows server 2019 IIS
Помогите, у меня пылает очаг, настроил IIS FTP. В локалке проверил, работает но на общее обозрение ругается такой ошибкой. Я пооткрывал все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru