Набор символов от пользователя или базы данных? - PullRequest
2 голосов
/ 09 февраля 2011

Я пытаюсь выяснить, где наш проект пошел не так.

Давным-давно наш администратор базы данных создал пользователя и схему для проекта, над которым мы работали.

Мы передали этого пользователя подрядчику, который создал таблицы и установил приложение.

Сегодня я обнаружил, что наша база данных не поддерживает символы UTF-8, и нам это нужно.

select value from nls_database_parameters 
where parameter='NLS_CHARACTERSET'

Результат: WE8ISO8859P1

У меня вопрос: была ли допущена ошибка при создании пользователя или ошибка была допущена подрядчиком, создавшим таблицы?

Спасибо

1 Ответ

8 голосов
/ 09 февраля 2011

Набор символов является атрибутом базы данных.Поэтому тот, кто создал базу данных, предположительно выбрал неправильный набор символов.При создании пользователя или создании таблицы нет настроек, связанных с набором символов (кроме определения, использовать ли типы данных базы данных (CHAR / VARCHAR2) или типы данных национального набора символов (NCHAR / NVARCHAR2)).

Изменение набора символов существующей базы данных может занять немного усилий.В Руководстве по глобализации есть раздел, посвященный миграции набора символов .В зависимости от версии Oracle (процедура отличается в 10g и 11g) и от того, какие данные уже существуют, экспорт и импорт в новую базу данных может быть самым простым вариантом.

Я должен добавить, что порядок операцийВы указали в своем посте не имеет смысла.База данных должна быть создана до того, как пользователь или схема могут быть созданы.Поэтому не имеет смысла, что администратор базы данных мог создать пользователя и схему давно, а подрядчик создал базу данных совсем недавно.Возможно, вы используете термины «база данных» и «схема» в контексте, отличном от Oracle?

...