Closed LinkFly closed 10 years ago
Решил проблему подобным кодом:
(let ((cffi:*default-foreign-encoding* :windows-1251)) (fb-query-fetch-all *default-database* "select first 2 id, short_name from product"))
Предлагаю добавить в класс fb-database слот encoding и соответственно initarg - :encoding. И использовать значение этого слота при вызове ф-ий cffi:foreign-string-to-lisp и подобных.
Да, у меня была такая мысль, почему-то решил, что через cffi:default-foreign-encoding будет проще. Пересмотрю. Кстати вместо (fb-query-fetch-all default-database "select first 2 id, short_name from product")) можно использовать макрос fb-query: https://github.com/klimenko-serj/cl-fbclient/wiki/fb-query-macro а если вместо default-database использовать database-toplevel и fb-with-toplevel-connection, то можно писать просто: (fb-query "select first 2 id, short_name from product")
У меня к вам вопрос: сталкивались ли вы с проблемами в многопоточных приложениях? Я обнаружил некоторые проблемы в fbclient.dll (именно под Windows, под Linux все работает нормально.), и пока не знаю как их обойти.
2013/10/22 Sergey Katrevich notifications@github.com
Решил проблему подобным кодом: (let ((cffi:default-foreign-encoding :windows-1251)) (fb-query-fetch-all default-database "select first 2 id, short_name from product"))
Предлагаю добавить в класс fb-database слот encoding и соответственно initarg - :encoding. И использовать значение этого слота при вызове ф-ий cffi:foreign-string-to-lisp и подобных.
Reply to this email directly or view it on GitHubhttps://github.com/klimenko-serj/cl-fbclient/issues/5#issuecomment-26793154 .
Спасибо за подсказки! Нет, я не сталкивался. У нас на стороне сервера используется odbc драйвер (и лисповый биндинг к нему sql-odbc) На cl-fbclient пока только в процессе перехода (если получится - сейчас выявилась странная ошибка с удалением таблицы в том же коннекте, в случае если были произведены какие-либо операции с данными этой таблицы: https://github.com/klimenko-serj/cl-fbclient/issues/6 ). В "Firebird ODBC Конфигуратор" (Администрирование -> Источник данных ODBC) стоит галка "Потоко-безопасный источник". Что она значит? Возможно то, что драйвер ODBC не будет работать в многопоточном режиме с fbclient.dll.
Скорее всего нам понадобиться работать в fbclient в многопоточном режиме (и именно под Windows). В связи с этим, можно поподробней - какие именно возникли проблемы?
добавил поле :encoding в класс fb-database. Проверяйте.
Спасибо, используем.
Добрый день. Мы используем базу firebird с кодировкой windows-1251 (по историческим причинам). Видимо поэтому появляется эта (указанная в заголовке) ошибка. Предусмотрена ли возможность настроить cl-fbclient для работы с БД в определённой кодировке?