![]() |
|
Модераторы: LSD |
![]()
|
|
| 53x7u5 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 26.5.2010 Репутация: нет Всего: нет |
Добрый вечер, сразу скажу что свою проблему как мне кажется решить удалось, но вопросы у меня остались.
Мне доводилось немного ковырять MySQL таблицы когда-то еще на лабах в университете, а сейчас возникла необходимость оценить работу с postgreSQL и неприятный косяк ждал меня почти сразу. С postgreSQL я работаю у себя на локалке в связке Денвер3 + расширение для PostgreSQL 8.4 с утилитой phpPgAdmin. Так вот по умолчанию сразу после первого запуска создается учетка USER/LOGIN postgres/postgres и исходя из специфики ОС устанавливается кодировка по умолчанию. В Win XP мы получаем "из коробки" кодировку WIN1251 которая нам как раз таки и не нужна, т.к. нас интересует UTF-8. Проблема в том что даже при создании новой базы данных с любой другой кодировкой (юникод в нашем случае) процесс будет прерван и вывалится сообщений об ошибке которое какбэ намекает что создание таблиц в кодировке отличной от системной (?) не допускается. В данном случае в качестве кодировки по-умолчанию, как я и говорил, использовалась win1251. Немного пошарившись по форумам и почитав rtfm выяснилось что новые таблицы создаются на оснвое двух шаблонов - 'template0' и 'template1'. В частности, насколько я понял, конструктор таблиц при работе через phpPgAdmin использует template1 в котором и зафиксирован win1251, будь он неладен. Решение проблемы с кодировкой судя по всему возможно путем сброса template1 например способом достаточно подробно описанным тут. Но, если по-чесноку, то я с ним не разобрался совершенно. Буду благодарен если кто-нибудь подскажет мне ньюбу где в какой консоли все это нужно было вводить. Методом научного тыка я добился только того что случайно снес дефолтную бд и пришлось сносить postgreSQL и устанавливать её заново. Далее на глаза попалась утилита pgAdmin III. Опять же самым популярным методом у новичков удалось понять что это оболочка позволяет устраивать все те же манипуляции с таблицами (а может быть даже и больше). Попытавшись создать новую таблицу с кодировкой UTF-8 и полем Template оставленным по-умолчанию получил ту же ошибку что и в phpPgAdmin. Однако тут уже я обратил внимание на HINT: Use thу same encoding as in the template database, or use template0 as template. На мою внимательность конечно можно попенять, но использовать template0 в phpPgAdmin все равно нельзя (или я не знаю как). А вот при создании новой таблицы через pgAdmin III этот темплейт использовать можно - он содержится в выпадающем списке при выборе Template [postgres, template0, template1]. Таким образом если для конструктора в качестве Template выбран template0, то можно указывать любую кодировку. В результате всех фрикций получаем:
Выходит что частично проблема решена. Неясно только на что влияют Collation и Character type. Хороший мануал на русском языке по postgreSQL я пока не нашел. Поэтому, уважаемые знатоки, внимание вопрос: 1. На что влияют Collation и Character type? (навредят ли мне эти два параметра если мне нужно чтобы вся база данных была unicode) 2. Как можно было воспользоваться template0 в отсутстиве pgAdmin III для того чтобы создать таблицу в кодировке отличной от "системной" win1251? 3. Бонусный: что и где нужно было ковырять чтобы получить результат описанный по ссылке ранее? Спасибо, жду ваших ответов. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PostgreSQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |