Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2015, 19:27   #1
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию Перенос БД с Windows (86x) на Windows (64x)

Доброе время суток, форумчане,

У меня сейчас стоит Windows 8.1 (64x), и FireBird 2.5.4.26856_0 с помощью IBExpert 2015.6.17.1, при соединении с БД, ошибка:
Код:
«Connection authorization failure.
file D:\....gdb is not a valid database»
Ранее у меня была Windows XP (86x) и FireBird 2.5.4.26856, и на ней (на виртуалке), IBExpert соединяется.
Я захотел перенести с (86х) на (64х) с помощью Backup/Restore.
На (86х) я сделал с помощью IBExpert, backup (в отчете таблицы в файл попали), а вот при restore, в отчет вывелось исключение:

Код:
…
gbak:restoring domain RDB$8 
IBE: Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
     Invalid metadata detected. Use -FIX_FSS_METADATA option.
     Malformed string.
     Exiting before completion due to errors.

Искал в IBExpert данную опцию, не нашел…
Кто что может посоветовать?
А может это вообще не с этим связано…

Заранее спасибо.
P.S.
У меня несколько приложений с разными "*.gdb", и все они выдают «file D:\....gdb is not a valid database» (кроме одной), на (64х), а на (86х) - все отлично работает - хотя версии FireBird ОДИНАКОВЫЕ, РАЗНЫЕ только разрядность ОС и сами ОС

Последний раз редактировалось KBO; 10.10.2015 в 19:31.
KBO вне форума Ответить с цитированием
Старый 11.10.2015, 01:13   #2
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

Решение:

происходит через backup (на х86) и restore БД (на х64).
При restore не забывать СТАВИТЬ галку напротив "Fix malformed UNICODE_FSS metadata using charset" и указывать соответствующую кодировку, например "WIN1251"
KBO вне форума Ответить с цитированием
Старый 12.10.2015, 00:44   #3
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

Но пишут, что можно даже БЕЗ backup/restore обойтись
На одном из сайтов я прочел, что в директории FireBird 2.5.4.26856 (для Windows (х64)), есть две библиотеки «fbclient.dll», следующим по путям:

- c:\Program Files\Firebird\Firebird_2_5\bin\fbc lient.dll - версия клиента x64,

- c:\Program Files\Firebird\Firebird_2_5\WOW64\f bclient.dll - версия x32.

Возможно, если подключить приложение к правильной библиотеке, а именно к библиотеке из «WOW64\», то приложение заработает БЕЗ "backup/restore".

Вопрос:
Как приложение переключить с библиотеки на библиотеку? А заодно такое сделать и в IBExpert?

Я просмотрел файлы с раширением "*.conf", думал там что-то может быть, но так и не нашел.

Да приложение написано на Delphi

Последний раз редактировалось KBO; 12.10.2015 в 00:48.
KBO вне форума Ответить с цитированием
Старый 12.10.2015, 08:01   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Восстание бэкапа при переходе с ОС на ОС делается не только на огнептице. Поверь - такой сложностью страдают все СУБД. И это, с чем ты столкнулся, еще семечки. Тебе повезло не увидеть весь спектр миграции. Так что зря думаешь что поступил неправильно. Главное - бэкап должен быть транспортабельным (есть в огнептице такая опция).
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.10.2015, 10:57   #5
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,774
По умолчанию

Цитата:
Сообщение от KBO Посмотреть сообщение
Возможно, если подключить приложение к правильной библиотеке, а именно к библиотеке из «WOW64\», то приложение заработает БЕЗ "backup/restore".
Это вряд ли. Разрядность ведь не по волшебству меняется, это физически разный и несоместимый код. А вот данные самой БД не должны зависеть от разрядности ПО -- в теории, по крайней мере. Советую почитать доку Firebird по этому поводу.

Цитата:
Сообщение от KBO Посмотреть сообщение
При restore не забывать СТАВИТЬ галку напротив "Fix malformed UNICODE_FSS metadata using charset" и указывать соответствующую кодировку, например "WIN1251"
Мне кажется, что дело в этом. Даже более того, если теперь подложить новую базу вместо старой, всё должно работать. В будущем же лучше сразу создавать базу правильно -- с современным диалектом SQL и правильной кодировкой строк.
Vapaamies вне форума Ответить с цитированием
Старый 12.10.2015, 22:00   #6
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

Цитата:
Сообщение от Vapaamies Посмотреть сообщение
Мне кажется, что дело в этом. Даже более того, если теперь подложить новую базу вместо старой, всё должно работать. В будущем же лучше сразу создавать базу правильно -- с современным диалектом SQL и правильной кодировкой строк.
Да, как я писал дело было именно в галке и кодировке.


Так я и НЕ получил ответа граждани:
Если можно конечно, то каким образом можно научить приложение брать конкретную библиотеку "fbclient.dll" (или с директории "bin", или с директории "WOW64")? (Если с ней работает сам FireBird).
KBO вне форума Ответить с цитированием
Старый 13.10.2015, 09:26   #7
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,774
По умолчанию

Цитата:
Сообщение от KBO Посмотреть сообщение
Если можно конечно, то каким образом можно научить приложение брать конкретную библиотеку "fbclient.dll" (или с директории "bin", или с директории "WOW64")? (Если с ней работает сам FireBird).
Использовать какие-то продвинутые компоненты, не IBX. Какая версия Delphi? Что там в современных FireDAC накрутили, не знаю.

Если же программа готовая и от нее нет исходников, то никак. Соответствующая настройка должна быть в самой программе. Если ее нет, то нет.
Vapaamies вне форума Ответить с цитированием
Старый 13.10.2015, 09:28   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
каким образом можно научить приложение брать конкретную библиотеку
Либо приткнуть ее к экзешнику либо в переменную окружения PATH прописать путь к нужному каталогу.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.10.2015, 13:30   #9
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

Цитата:
Сообщение от Vapaamies Посмотреть сообщение
Использовать какие-то продвинутые компоненты, не IBX. Какая версия Delphi? Что там в современных FireDAC накрутили, не знаю.
Версия Delphi 7

Цитата:
Сообщение от Stilet Посмотреть сообщение
Либо приткнуть ее к экзешнику либо в переменную окружения PATH прописать путь к нужному каталогу.
В каталог ее к программе закинуть вопросов нет.
Но сама же программа с ней через FireBird общается - или не так?
Т.е. это нужно к каким-то конкретно процедурам/функциям обращаться в этой библиотеке?
Так же просто к ней не отправишься?
KBO вне форума Ответить с цитированием
Старый 13.10.2015, 14:37   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Но сама же программа с ней через FireBird общается - или не так?
Открой модули работы с IBX в Делфи и посмотри: Там должна быть константа, где указано имя ДЛЛ. Не знаю как в ХЕ, а в старых делфи обращение было к ДЛЛ напрямую.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос Windows-Linux, Ошибка initializing argument lollollollol Qt и кроссплатформенное программирование С/С++ 2 19.05.2015 05:21
После установки windows xp 32- битной нельзя установить windows 7 64-битную Mag84 Windows 3 03.12.2012 15:50
Собираюсь перейти с Windows на Linux, какой из дистирибутивов наиболее похож на Windows (Xp,7)? ivan.tiran Windows 5 09.03.2012 17:51
64X WINDOWS И Delphi Владимир008 Софт 1 24.11.2010 06:12