Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / DB2 Express-C и локаль базы / 25 сообщений из 31, страница 1 из 2
27.02.2006, 16:40
    #33568488
db2student
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 Express-C и локаль базы
Создал базу с локалью Ru теперь при попытке ее сконфигурить (Configure Parameters на базе в DB2 ControlCenter) получаю ошибку:

SQL0332N There is no available conversion for the source code page "1252" to the target code page "UNKNOWN". Reason Code "1". SQLSTATE=57017



Explanation:

No conversion of data is supported from the source code page to
the target code page. This error can occur under the following
conditions:

o An error has occurred executing an SQL statement. The data
cannot be processed by the database manager.

o An error has occurred when trying to import or export a WSF
or an IXF file. The import or export will fail.

o Federated system users: the data source does not support the
specified code page conversion.

o DB2 Connect users: both "source code page" and "target code
page" may refer to a CCSID on the host or AS/400 system.

o An error has occurred during conversion from the code page
stored with the encrypted data to the target code page.



The reason codes are as follows:


1 source and target code page combination is not supported by
the database manager.

2 source and target code page combination is either not
supported by the database manager or by the operating system
character conversion utility on the client node.

3 source and target code page combination is either not
supported by the database manager or by the operating system
character conversion utility on the server node.

User Response:

Possible solutions include:

o Verify that data conversion between the source and target
code page is supported by the database manager. For
database manager code page support, check the Quick
Beginnings . If DB2 Connect is being used, check the DB2
Connect Quick Beginnings .

o Data conversion for some code page combinations may be
supported through database manager install options, depending
on the language group of the source or target code page.
Ensure that the appropriate ones are installed and accessible
to the database manager and the client application, as
indicated by the reason code returned. For a list of install
options, consult the Quick Beginnings or the DB2 Connect
Quick Beginnings .

o Data conversion for some code page combinations may be
supported by the database manager through an operating
system-provided character conversion utility, depending on
the language group of the source or target code page. Check
your operating system documentation for a list of supported
conversions and ensure that the appropriate ones are
installed and accessible to the database manager and the
client application, as indicated by the reason code returned.
For a list of operating system conversion utilities used,
consult the Quick Beginnings or the DB2 Connect Quick
Beginnings .

o Change the unsupported code page(s) to one of the documented
pairs.



AS/400 users should be aware that AS/400 CCSID 65535 is not
supported. AS/400 data encoded using CCSID 65535 must be
converted to a supported CCSID before it can be accessed using
DB2 Connect.

Federated system users: for data source code page support, see
the Federated Systems Guide .

sqlcode : -332

sqlstate : 57017


как исправить ?
...
Рейтинг: 0 / 0
27.02.2006, 16:56
    #33568559
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 Express-C и локаль базы
Для начала, назовите свою ОС.

Далее. Если у вас английская locale, и вы создаёте базу в русской, или наоборот, ничего хорошего не выйдет. Они должны быть одного языка (хотя необязательно одной кодовой страницы). 1251 конвертируется в 866 и в KOI8-R (не помню кода) и обратно автоматически. Есть грязный приём под названием DB2CODEPAGE, но это на крайний случай.

1252 - английская кодовая страница. А как вы добились страницы "UNKNOWN", мне просто непонятно.
...
Рейтинг: 0 / 0
27.02.2006, 17:13
    #33568616
db2student
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 Express-C и локаль базы
ОС Windows2003 англ.

При инсталляции DB2 я выбрал английский и русский.
...
Рейтинг: 0 / 0
27.02.2006, 17:17
    #33568634
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 Express-C и локаль базы
создавай базу данных так:
CREATE DB {dbname} USING CODESET 1251 TERRITORY RU
...
Рейтинг: 0 / 0
27.02.2006, 17:23
    #33568662
ggv
ggv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 Express-C и локаль базы
Victor - 878 imho. koi8-r
...
Рейтинг: 0 / 0
27.02.2006, 17:35
    #33568705
Andron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 Express-C и локаль базы
Я создаю базу с помощью визарда. На шаге 6 выбираю настройки Database locale:

Country/Region: Russia
Territory: RU
Code set: 1251

Collating Sequence: System

Получается вот такой DDL:

CREATE DATABASE data ON 'F:' USING CODESET 1251 TERRITORY RU COLLATE USING SYSTEM CATALOG и т.д.

что в нем не так?

База создается нормально.
...
Рейтинг: 0 / 0
27.02.2006, 20:33
    #33569118
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 Express-C и локаль базы
db2studentОС Windows2003 англ.

При инсталляции DB2 я выбрал английский и русский.

Стало быть, у вас в International Settings (т.е. Regional and Language Options?) в Windows 2003 стоит английский locale. Отсюда и конфликт. Ещё одно подтверждение тому - что у вас сообщение об ошибке на английском.

Когда вы выберете русскую locale, надписи и сообщения будут уже по-русски. И от этого будет не так просто избавиться. Лучше удалить и переставить заново, запустив

setup /i en

и не выбирать русский.

Это никак не повлияет на возможность хранить в базе русские тексты, но зато надписи и сообщения будут на понятном языке. Не надо будет чесать в затылке, пытаясь понять, что значит отбросить базу данных, и т.д., и т.п.
...
Рейтинг: 0 / 0
28.02.2006, 10:53
    #33569945
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 Express-C и локаль базы
Еще выполни вот такую фигню:
db2set.exe DB2CODEPAGE=1251 (или 866)
если страница 1251 то используй шрифты Lucida Console
если 866 - используй растровые
И в дополнение обрати внимание на команду chcp {код страницы}

Я, например создал у себя на десктопе вот такой линк:
C:\DB2\SQLLIB\BIN\db2cmd.exe -i c:\far\far.exe
после этого мне нужно всего лишь сказать
chcp 866
и всё работает по-русски
...
Рейтинг: 0 / 0
28.02.2006, 13:29
    #33570611
db2student
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 Express-C и локаль базы
Пересоздал базу заново, но в качестве Code set: UTF-8, такая ошибка не появляется :)
...
Рейтинг: 0 / 0
28.02.2006, 13:33
    #33570640
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 Express-C и локаль базы
а теперь проведи эксперимент:
Код: plaintext
1.
2.
3.
4.
create table test (id int, name char( 30 ))
insert into test values ( 1 ,'АБВГДЕЁ')
insert into test values ( 1 ,'ABCDEFG')
select length(rtrim(name)) from test
И скажи, а тебе нужно, чтобы в char(30) вмещалось только 15 русских буков?
...
Рейтинг: 0 / 0
28.02.2006, 22:43
    #33572174
Andron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 Express-C и локаль базы
Гы. Ну насчет того что данные в юникоде больше места занимают это и так известно.
...
Рейтинг: 0 / 0
28.02.2006, 22:47
    #33572177
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 Express-C и локаль базы
Но неизвестно, нужно ли это dbstudent'у ;-)
...
Рейтинг: 0 / 0
28.02.2006, 23:00
    #33572183
db2student
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 Express-C и локаль базы
А мне вот непонятно, это ведь баг - когда при кодировке базы отличной от системной локали не работает конфигурирование в ControlCenter ?
...
Рейтинг: 0 / 0
01.03.2006, 00:02
    #33572238
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 Express-C и локаль базы
Нет, это не баг. По крайней мере, не баг в DB2 (а где именно баг, я умолчу). Ибо перекодировка определена лишь между родственными кодировками (напр., 1251<->866), а между прочими (a la 1251<->1252) не определена, а значит, осмысленная коммуникация невозможна.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
19.05.2008, 10:20
    #35319944
mitek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 Express-C и локаль базы
Извиняюсь за ап старой темы, нашел воркараунд, вдруг кому полезно будет.

Точно такая же ситуация, с CLI ODBC Driver на Win2003 при русской локали и всех рег. настройках на RU вылечилась изменением переменной реестра :
\\HKLM\System\CurrentContrloSet\Control\Nls\CodePage\1252

c c_1252.nls на с_1251.nls
...
Рейтинг: 0 / 0
01.09.2008, 15:06
    #35516169
The Chase
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 Express-C и локаль базы
Victor MetelitsaНет, это не баг. По крайней мере, не баг в DB2 (а где именно баг, я умолчу). Ибо перекодировка определена лишь между родственными кодировками (напр., 1251<->866), а между прочими (a la 1251<->1252) не определена, а значит, осмысленная коммуникация невозможна.

Вот мучаюсь сейчас с подобным 1252->1251... под ODBC + DB2 9.5...

а не могли бы вы сослаться на некий оффициальный документ где сказано что под DB2 "осмысленная коммуникация невозможна" ?

идеии есть как обойти? ;)
...
Рейтинг: 0 / 0
01.09.2008, 17:02
    #35516505
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 Express-C и локаль базы
Клиент на UTF-8 подключится к кому угодно.
db2set DB2CODEPAGE=1208
На линуксах например, после этого сразу все проблемы отпадают)
...
Рейтинг: 0 / 0
01.09.2008, 17:17
    #35516555
The Chase
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 Express-C и локаль базы
переносим FIREBIRD ANSI базу (ISO8859-1) на linux сервер + ANSI WinXP клиент...

суть вопроса - в отличии от INTERBASE уже не получается в одной ISO8859-1 таблице хранить фразы на разных языках в ansi? которые бы в клиенте отображались правильно под правильно выбранной win локалью...

например фразы на польском и чешском требуют таблицу в ISO8859-2, на русском в ISO8859-5, а на болгарском вообще ниодна кодировка не подходит...

одной таблицей и без UTF - никак?
...
Рейтинг: 0 / 0
01.09.2008, 17:35
    #35516590
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 Express-C и локаль базы
The Chaseа не могли бы вы сослаться на некий оффициальный документ где сказано что под DB2 "осмысленная коммуникация невозможна" ?

идеии есть как обойти? ;)Что "осмысленная коммуникация невозможна", это просто само собой разумеется. Ведь в 1252 нет русских букв (по определению), а в 1251 и 866 есть. Метод обмана (db2set.exe DB2CODEPAGE=1251 или db2set DB2CODEPAGE=1208) здесь уже упоминался; если он у вас не работает, то мне нечего больше предложить.

The Chase
суть вопроса - в отличии от INTERBASE уже не получается в одной ISO8859-1 таблице хранить фразы на разных языках в ansi? которые бы в клиенте отображались правильно под правильно выбранной win локалью...
Теоретически, вы можете использовать VARCHAR(..) FOR BIT DATA, оно рассматривается как байтовый массив. Перекодировать и сортировать придётся самостоятельно.
...
Рейтинг: 0 / 0
01.09.2008, 18:32
    #35516707
The Chase
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 Express-C и локаль базы
Victor MetelitsaЧто "осмысленная коммуникация невозможна", это просто само собой разумеется. Ведь в 1252 нет русских букв (по определению), а в 1251 и 866 есть. Метод обмана (db2set.exe DB2CODEPAGE=1251 или db2set DB2CODEPAGE=1208) здесь уже упоминался; если он у вас не работает, то мне нечего больше предложить.

тестировал db2set DB2CODEPAGE=1208 на Windows версии DB2 9.5 - "обманывает" вроде правильно
при подключении же к версии DB2 под SUSE Enterprise Server 9.0 - и анналогичной "махинации" - никакого эффекта... :(
...
Рейтинг: 0 / 0
02.09.2008, 12:30
    #35517769
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 Express-C и локаль базы
The Chase Victor MetelitsaЧто "осмысленная коммуникация невозможна", это просто само собой разумеется. Ведь в 1252 нет русских букв (по определению), а в 1251 и 866 есть. Метод обмана (db2set.exe DB2CODEPAGE=1251 или db2set DB2CODEPAGE=1208) здесь уже упоминался; если он у вас не работает, то мне нечего больше предложить.

тестировал db2set DB2CODEPAGE=1208 на Windows версии DB2 9.5 - "обманывает" вроде правильно
при подключении же к версии DB2 под SUSE Enterprise Server 9.0 - и анналогичной "махинации" - никакого эффекта... :(

Странно... вроде так не бывает... у меня работает всегда и везде.
Ходите с какого клиента на какой? С винды на сусе?
...
Рейтинг: 0 / 0
02.09.2008, 18:49
    #35518893
The Chase
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 Express-C и локаль базы
gardenman The Chaseтестировал db2set DB2CODEPAGE=1208 на Windows версии DB2 9.5 - "обманывает" вроде правильно
при подключении же к версии DB2 под SUSE Enterprise Server 9.0 - и анналогичной "махинации" - никакого эффекта... :(

Странно... вроде так не бывает... у меня работает всегда и везде.
Ходите с какого клиента на какой? С винды на сусе?

да, точнее: с XP Eng SP3 на Suse Enterprise Server 10 + unixodbc 2.2.11-21.4 + IBM DB2 9.5

знадь бы точно где копать... может просто linux локали барахлят... :\
...
Рейтинг: 0 / 0
03.09.2008, 11:57
    #35519894
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 Express-C и локаль базы
Ну хорошо. На вашей сусе сделайте базу:
CREATE DB TEST1252 USING CODESET 1252 TERRITORY US

На клиенте:
cmd.exe
set DB2CODEPAGE=1208
db2cmd.exe
db2.exe
CATALOG TCPIP NODE ....
CATALOG DB TEST1252 AT NODE...
connect to TEST1252 ...

Работает ВСЕГДА!... у меня не было случая чтобы это не работало....
...
Рейтинг: 0 / 0
03.09.2008, 18:18
    #35521162
The Chase
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 Express-C и локаль базы
gardenmanНу хорошо. На вашей сусе сделайте базу:
CREATE DB TEST1252 USING CODESET 1252 TERRITORY US

Работает ВСЕГДА!... у меня не было случая чтобы это не работало....

пока никак :(

ряд уточнений можно? :

сам скрипт с данными у вас в 1251 или 1252?
перед его заливкой db2codepage выставлено в 1251 /1252 ?

пример того что я пытаюсь залить -
/topic/309706#6141165
...
Рейтинг: 0 / 0
03.09.2008, 18:46
    #35521211
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DB2 Express-C и локаль базы
Чтобы у вас сработало то, что написано тут:
/topic/309706#6141165
вам нужно создать базу в юникодной кодировке:
CREATE DB {dbname} USING CODESET UTF-8 TERRITORY RU

На клиенте выставить
SET DBCODEPAGE=1208 и далее по тексту как показано выше....

Затем необходимо обготовить файл в кодировке UTF-8. Каким образом вы это будете делать - не мое дело. Но рассмотрите утилиту iconv из линуксов)) ей же можете проверить что у вас все правильно.
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / DB2 Express-C и локаль базы / 25 сообщений из 31, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]