вопрос по PostgreSQL

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Nadin
новенький
Сообщения: 10
Зарегистрирован: 22.07.2009 11:58:59
Откуда: Красноярск

Re: вопрос по PostgreSQL

Сообщение Nadin »

Скачала заплатку pgconnection, скопировала файл, перекомпилировала Лазарь и всё равно и в DBGRid, и в SQLQury.SQL при просмотре результатов запроса не все записи с кириллицей отображаются правильно. В PGAdmin III SELECT возвращает все строки корректно. Кодировка базы в Postgres UTF8.
Некоторые записи показываются пустыми, хотя там есть данные, некоторые обрезаются, а в некоторые добавляются дополнительные символы. Что я делаю неправильно?
Logo
постоялец
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: вопрос по PostgreSQL

Сообщение Logo »

Это ошибка не Lazarus, а FPC. Поэтому перекомпилировать нужно именно его. Для этого Вам нужно скачать исходники fpc.
Nadin
новенький
Сообщения: 10
Зарегистрирован: 22.07.2009 11:58:59
Откуда: Красноярск

Re: вопрос по PostgreSQL

Сообщение Nadin »

Самое забавное, что увеличив в Postgres длину поля на 5 символов всё отлично отображается. Хотя в базе-то хватало и так символов.
Logo
постоялец
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: вопрос по PostgreSQL

Сообщение Logo »

Я выше по топику пояснял эту проблему. Это в pgconnection выделяется буфер по количеству символов, а не по количеству байт, а UTF8 имеет два байта на символ, вот и получается, что половина кирилицы обрезается. Латинские символы и цифры проходят правильно.

Добавлено спустя 13 минут 57 секунд:
исходники fpc лучше брать из svn :
svn checkout http://svn.freepascal.org/svn/fpc/trunk fpc-2.3.x
здесь вносятся все последние правки.

Оригинальный файл fpc-2.3.x/packages/fcl-db/src/sqldb/postgres/pqconnection.pp переименуйте, а вместо него запишите патченый.
Затем зайдя в каталог fpc-2.3.x, наберите команду make clen all. Если не найдет компилятор, то наберите make clean all PP=ПУТЬ_К_КОМПИЛЯТОРУ/ФАЙЛ_КОМПИЛЯТОРА.
После завершения компиляции, инсталлируем новую версию:
make install

только после компиляции fpc перекомпилируем Lazarus. Проблема исчезнет.
Постарайтесь освоить этот процесс, это поможет в будущем легко вносить правки и изменения.
Аватара пользователя
grigoreo
постоялец
Сообщения: 195
Зарегистрирован: 10.03.2009 14:43:43
Откуда: С нашей Раши

Re: вопрос по PostgreSQL

Сообщение grigoreo »

Nadin писал(а):Самое забавное, что увеличив в Postgres длину поля на 5 символов всё отлично отображается. Хотя в базе-то хватало и так символов.


Nadin предлагаю пока не заморачиватся на этой проблеме делайте пока для рускоязычных полей длину поля умноженую на 2 , если вы используете тип varchar он все равно упаковывается и не будет занимать больше места в файлах таблицы чем по физической длине конкретно взятой строки.
Nadin
новенький
Сообщения: 10
Зарегистрирован: 22.07.2009 11:58:59
Откуда: Красноярск

Re: вопрос по PostgreSQL

Сообщение Nadin »

Спасибо за ответы! Просто для поля, хранящего значения "М" и "Ж" пришлось сделать величину поля 2 символа, а не один. Я переписываю свой давний проект с VB6 база в MS Access на Lazarus и база на Postgres. Проект с кучей форм и таблиц много всяких. Так что вопросов будет много ещё. :) Теперь осталось ещё с выводом в Open Office разобраться. Из VB6 я сделала без проблем, а вот в Lazaruse придётся помучаться, судя по ответам на этом форуме.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: вопрос по PostgreSQL

Сообщение Vadim »

Nadin
Здесь один человек предлагал компонент, который делает отчеты в файл OpenOffice Calc. Поищите поиском...
Аватара пользователя
grigoreo
постоялец
Сообщения: 195
Зарегистрирован: 10.03.2009 14:43:43
Откуда: С нашей Раши

Re: вопрос по PostgreSQL

Сообщение grigoreo »

Nadin писал(а):Просто для поля, хранящего значения "М" и "Ж" пришлось сделать величину поля 2 символа, а не один.


могла бы в Логику перегнать тут то всего 2 значения или мужчина или женщина (ну если конечно не учитывать извратов запада)) )
Nadin
новенький
Сообщения: 10
Зарегистрирован: 22.07.2009 11:58:59
Откуда: Красноярск

Re: вопрос по PostgreSQL

Сообщение Nadin »

Если бы дело было только в вопросе выбора пола. :) У меня же полно других символьных полей.
Аватара пользователя
grigoreo
постоялец
Сообщения: 195
Зарегистрирован: 10.03.2009 14:43:43
Откуда: С нашей Раши

Re: вопрос по PostgreSQL

Сообщение grigoreo »

Nadin писал(а):Если бы дело было только в вопросе выбора пола. :) У меня же полно других символьных полей.


ну я пока эту дыру заляпал удвоением типа varchar , физически риска нету благо этот тип только ограничивается цифрой максимума, но физически строки упаковываются так что база не распухнет
Андрей Варкентин
новенький
Сообщения: 21
Зарегистрирован: 17.09.2010 11:56:14

Re: вопрос по PostgreSQL

Сообщение Андрей Варкентин »

Господа, у меня такая же проблема с DBGrid'ом, только подключаюсь к SQLite3 компонентом TSQLite3Connection из вкладки SQLdb. Кодировку использую UTF-8, лазарь версии 0.29.27526, fpc 2.4.3. Может в fpc 2.4.0 эта проблема отсутствует? Есть ли вариант решения проблемы без удвоения символьных полей в базе? Кто и как решает эту проблему?
Если есть решение - ткните меня лицом.
Аватара пользователя
grigoreo
постоялец
Сообщения: 195
Зарегистрирован: 10.03.2009 14:43:43
Откуда: С нашей Раши

Re: вопрос по PostgreSQL

Сообщение grigoreo »

Андрей Варкентин писал(а):Господа, у меня такая же проблема с DBGrid'ом, только подключаюсь к SQLite3 компонентом TSQLite3Connection из вкладки SQLdb. Кодировку использую UTF-8, лазарь версии 0.29.27526, fpc 2.4.3. Может в fpc 2.4.0 эта проблема отсутствует? Есть ли вариант решения проблемы без удвоения символьных полей в базе? Кто и как решает эту проблему?
Если есть решение - ткните меня лицом.


Дык предлагаю вообще не использовать ограничение по размеру, думаю на скорости это не отразится во всяком случае по моим тестам даже чуток быстее стало, единственный момент это ширина колонок грида по дефолту будут самыми большими, но у меня полюбому была надобность для каждого пользователя держать персональные настройки поэтому ити данные всегда переопределялись в зависимости от предпочтений конкрретного юзверя))
Андрей Варкентин
новенький
Сообщения: 21
Зарегистрирован: 17.09.2010 11:56:14

Re: вопрос по PostgreSQL

Сообщение Андрей Варкентин »

grigoreo, спасибо за совет. Действительно данный способ работает нормально.
delphiec
незнакомец
Сообщения: 5
Зарегистрирован: 23.10.2011 11:09:03

Re: вопрос по PostgreSQL

Сообщение delphiec »

Народ пожалуйста напишите как сделать селект и инсерт в постгрес с помощью зеоса на лазаре уже 2-ой день бьюсь ничего не получается, пишет bookmark was not found, непонятно вообще причем там букмарк, это происходит прилюбых действиях опен или коннект, буду очень благодарен если кто нибудь вышлет рабочий пример на delphiec90@mail.ru
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: вопрос по PostgreSQL

Сообщение Vadim »

delphiec
Zeos какой версии?
Ответить