|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.06.2018, 12:05 | #1 |
Пользователь
Регистрация: 07.07.2013
Сообщений: 15
|
создание БД с комментариями на русском
Добрый день осваиваю Постгрес, через использование дельфи компонент ZEOSDB, и при попытке создания базы через использование ZSQLProcessor
вылетает ошибка. Ошибка на комментарий на русском COMMENT ON ROLE FMBZ_Fokin_A IS 'борисыч'; в скрипте. Если комментарий на английском то все замечательно работает. Может ли кто нибудь подсказать как программно добавлять комментарии на русском языке? вот фрагмент кода FMBZ_ZSQLProcessor.Connection :=FMBZ_ZConnection; FMBZ_ZSQLProcessor.Delimiter := ';'; FMBZ_ZSQLProcessor.DelimiterType := dtDelimiter; FMBZ_ZSQLProcessor.Script.LoadFromF ile('script.sql'); try FMBZ_ZSQLProcessor.Execute; ShowMessage('выполнен!'); except ShowMessage('Ошибка!'); end; вот скрипт при помощи которого пытаюсь создать базу. ----Creating Role SET client_encoding = 'UNICODE'; DROP ROLE IF EXISTS FMBZ_Fokin_A; CREATE ROLE FMBZ_Fokin_A WITH LOGIN PASSWORD 'FMBZ_Fokin_A' SUPERUSER CREATEDB CREATEROLE; UPDATE pg_authid SET rolcatupdate=false WHERE rolname='FMBZ_Fokin_A'; COMMENT ON ROLE FMBZ_Fokin_A IS 'борисыч'; CREATE DATABASE "FMBZ_Fokin_A" WITH OWNER=FMBZ_Fokin_A ENCODING='UNICODE' TABLESPACE = DEFAULT; COMMENT ON DATABASE "FMBZ_Fokin_A" IS 'фокин'; |
01.06.2018, 12:14 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
SET client_encoding = 'UTF8' не пробовал?
И сам скрипт тоже в этой кодировке
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
05.06.2018, 13:53 | #3 |
Пользователь
Регистрация: 07.07.2013
Сообщений: 15
|
Попытаюсь заново, не убивайте сильно
Добрый день осваиваю Постгрес, через использование дельфи компонент ZEOSDB, и при попытке создания базы через использование ZSQLProcessor вылетает ошибка. Ошибка на попытку создания комментария на русском COMMENT ON ROLE FMBZ_userA IS 'борисыч';. (скрипты и код приведен ниже. Скрипты сохранены в кодировке UTF8) Действия: 1)как супер пользователь подключаюсь к постгресу через использование TZConnection 2)и пытаюсь выполнить свой скрипт через использование TZSQLProcessor 3)при выполнении строки кода FMBZ_ZSQLProcessor.Execute в дебагере можно видеть что в цикле for I := 0 to Pred(StatementCount) do на выполнении вызова Statement.ExecuteUpdatePrepared; происходит ошибка при попытке выполнить строку создания комментария. И пользователь не создается. Если же комментарий и весть остальной текст написан по английски то скрипт выполняется совершенно нормально. Эта ошибка происходит только в том случае если в "Региональных стандартах" в текущем языке программ не поддерживающих юникод установлен Английский (любой). Если же в этом пункте установлен Русский язык то данной ошибки при выполнении через компоненты ZEOSDB нет. Так же нет этой ошибки, если выполнять sql скрипты не через дельфи, а просто в среде через вызов cmd. ВОПРОСЫ: 1) можно ли как избежать этой ошибки? То есть существуют ли пути обхода этой "региональной ситуации"? 2) можно ли где то прочитать или просмотреть код, который бы позволял бы запустить скрипт на моей машине, а результат выполнения скрипта был бы на другой машине где стоит постгрес? ZSqlProcessor.pas фрагмент кода: Var FMBZ_ZConnection : TZConnection; FMBZ_ZSQLProcessor: TZSQLProcessor; ... FMBZ_ZConnection.HostName := 'localhost'; FMBZ_ZConnection.Database := 'postgres'; FMBZ_ZConnection.User := 'postgres'; FMBZ_ZConnection.Password := 'bars1234'; FMBZ_ZConnection.Protocol := 'postgresql-9'; FMBZ_ZConnection.Port := 5432; FMBZ_ZConnection.LoginPrompt := False; FMBZ_ZConnection.Properties.Add('co depage=win1251'); FMBZ_ZConnection.Connect; sleep(100); FMBZ_ZSQLProcessor.Connection :=FMBZ_ZConnection; FMBZ_ZSQLProcessor.Delimiter := ';'; FMBZ_ZSQLProcessor.DelimiterType := dtDelimiter; FMBZ_ZSQLProcessor.Script.LoadFromF ile('settings30.sql'); try FMBZ_ZSQLProcessor.Execute; ShowMessage('база данных создана!'); except ShowMessage('база данных НЕ создана!'); end; cmd запускалка для первого sql скрипта chcp 1251 SET PGPASSWORD=bars1234 "c:\Program Files\PostgreSQL\9.3\bin\psql.exe" -U postgres --no-password -f settings30.sql pause первый sql скрипт Код:
chcp 1251 "c:\Program Files\PostgreSQL\9.3\bin\psql.exe" --dbname FMBZ_BaseA --username fmbz_usera -f settings31.sql pause второй sql скрипт Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с комментариями из ВК | bilibian | Общие вопросы Delphi | 2 | 14.08.2014 07:52 |
Проблема с комментариями в WP | LeoN | WordPress и другие CMS | 0 | 05.12.2009 18:11 |
Игрушки с комментариями | Mishelka | Общие вопросы Delphi | 0 | 18.11.2009 20:49 |
Нужна книга на русском создание MFC приложений на C++ | sergey113 | Свободное общение | 2 | 24.03.2009 13:25 |
Помогите с комментариями | Cyberbest | Помощь студентам | 1 | 26.04.2008 16:46 |