Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 DB2 Express-C и локаль базы  [new]
db2student
Guest
Создал базу с локалью 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


как исправить ?
27 фев 06, 16:40    [2395484]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C и локаль базы  [new]
Victor Metelitsa
Member

Откуда: Тюмень
Сообщений: 2550
Для начала, назовите свою ОС.

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

1252 - английская кодовая страница. А как вы добились страницы "UNKNOWN", мне просто непонятно.
27 фев 06, 16:56    [2395618]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C и локаль базы  [new]
db2student
Guest
ОС Windows2003 англ.

При инсталляции DB2 я выбрал английский и русский.
27 фев 06, 17:13    [2395714]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C и локаль базы  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
создавай базу данных так:
CREATE DB {dbname} USING CODESET 1251 TERRITORY RU
27 фев 06, 17:17    [2395741]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C и локаль базы  [new]
ggv
Member

Откуда:
Сообщений: 1810
Victor - 878 imho. koi8-r
27 фев 06, 17:23    [2395777]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C и локаль базы  [new]
Andron
Member

Откуда: Cherepovets
Сообщений: 1816
Я создаю базу с помощью визарда. На шаге 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 и т.д.

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

База создается нормально.
27 фев 06, 17:35    [2395852]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C и локаль базы  [new]
Victor Metelitsa
Member

Откуда: Тюмень
Сообщений: 2550
db2student
ОС Windows2003 англ.

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


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

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

setup /i en

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

Это никак не повлияет на возможность хранить в базе русские тексты, но зато надписи и сообщения будут на понятном языке. Не надо будет чесать в затылке, пытаясь понять, что значит отбросить базу данных, и т.д., и т.п.
27 фев 06, 20:33    [2396476]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C и локаль базы  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
Еще выполни вот такую фигню:
db2set.exe DB2CODEPAGE=1251 (или 866)
если страница 1251 то используй шрифты Lucida Console
если 866 - используй растровые
И в дополнение обрати внимание на команду chcp {код страницы}

Я, например создал у себя на десктопе вот такой линк:
C:\DB2\SQLLIB\BIN\db2cmd.exe -i c:\far\far.exe
после этого мне нужно всего лишь сказать
chcp 866
и всё работает по-русски
28 фев 06, 10:53    [2397783]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C и локаль базы  [new]
db2student
Guest
Пересоздал базу заново, но в качестве Code set: UTF-8, такая ошибка не появляется :)
28 фев 06, 13:29    [2398861]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C и локаль базы  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
а теперь проведи эксперимент:
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 русских буков?
28 фев 06, 13:33    [2398900]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C и локаль базы  [new]
Andron
Member

Откуда: Cherepovets
Сообщений: 1816
Гы. Ну насчет того что данные в юникоде больше места занимают это и так известно.
Картинка с другого сайта.
28 фев 06, 22:43    [2401266]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C и локаль базы  [new]
Victor Metelitsa
Member

Откуда: Тюмень
Сообщений: 2550
Но неизвестно, нужно ли это dbstudent'у ;-)
28 фев 06, 22:47    [2401274]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C и локаль базы  [new]
db2student
Guest
А мне вот непонятно, это ведь баг - когда при кодировке базы отличной от системной локали не работает конфигурирование в ControlCenter ?
28 фев 06, 23:00    [2401289]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C и локаль базы  [new]
Victor Metelitsa
Member

Откуда: Тюмень
Сообщений: 2550
Нет, это не баг. По крайней мере, не баг в DB2 (а где именно баг, я умолчу). Ибо перекодировка определена лишь между родственными кодировками (напр., 1251<->866), а между прочими (a la 1251<->1252) не определена, а значит, осмысленная коммуникация невозможна.
1 мар 06, 00:02    [2401445]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: DB2 Express-C и локаль базы  [new]
mitek
Member

Откуда:
Сообщений: 605
Извиняюсь за ап старой темы, нашел воркараунд, вдруг кому полезно будет.

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

c c_1252.nls на с_1251.nls
19 май 08, 10:20    [5680965]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C и локаль базы  [new]
The Chase
Guest
Victor Metelitsa
Нет, это не баг. По крайней мере, не баг в DB2 (а где именно баг, я умолчу). Ибо перекодировка определена лишь между родственными кодировками (напр., 1251<->866), а между прочими (a la 1251<->1252) не определена, а значит, осмысленная коммуникация невозможна.


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

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

идеии есть как обойти? ;)
1 сен 08, 15:06    [6132215]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C и локаль базы  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
Клиент на UTF-8 подключится к кому угодно.
db2set DB2CODEPAGE=1208
На линуксах например, после этого сразу все проблемы отпадают)
1 сен 08, 17:02    [6133084]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C и локаль базы  [new]
The Chase
Member

Откуда:
Сообщений: 9
переносим FIREBIRD ANSI базу (ISO8859-1) на linux сервер + ANSI WinXP клиент...

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

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

одной таблицей и без UTF - никак?
1 сен 08, 17:17    [6133235]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C и локаль базы  [new]
Victor Metelitsa
Member

Откуда: Тюмень
Сообщений: 2550
The Chase
а не могли бы вы сослаться на некий оффициальный документ где сказано что под DB2 "осмысленная коммуникация невозможна" ?

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

The Chase

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

Теоретически, вы можете использовать VARCHAR(..) FOR BIT DATA, оно рассматривается как байтовый массив. Перекодировать и сортировать придётся самостоятельно.
1 сен 08, 17:35    [6133414]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C и локаль базы  [new]
The Chase
Member

Откуда:
Сообщений: 9
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 - и анналогичной "махинации" - никакого эффекта... :(
1 сен 08, 18:32    [6133904]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C и локаль базы  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
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 - и анналогичной "махинации" - никакого эффекта... :(


Странно... вроде так не бывает... у меня работает всегда и везде.
Ходите с какого клиента на какой? С винды на сусе?
2 сен 08, 12:30    [6136438]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C и локаль базы  [new]
The Chase
Member

Откуда:
Сообщений: 9
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 локали барахлят... :\
2 сен 08, 18:49    [6139119]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C и локаль базы  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
Ну хорошо. На вашей сусе сделайте базу:
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 ...

Работает ВСЕГДА!... у меня не было случая чтобы это не работало....
3 сен 08, 11:57    [6141131]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C и локаль базы  [new]
The Chase
Member

Откуда:
Сообщений: 9
gardenman
Ну хорошо. На вашей сусе сделайте базу:
CREATE DB TEST1252 USING CODESET 1252 TERRITORY US

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


пока никак :(

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

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

пример того что я пытаюсь залить -
https://www.sql.ru/forum/actualthread.aspx?bid=5&tid=309706#6141165
3 сен 08, 18:18    [6143710]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C и локаль базы  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
Чтобы у вас сработало то, что написано тут:
https://www.sql.ru/forum/actualthread.aspx?bid=5&tid=309706#6141165
вам нужно создать базу в юникодной кодировке:
CREATE DB {dbname} USING CODESET UTF-8 TERRITORY RU

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

Затем необходимо обготовить файл в кодировке UTF-8. Каким образом вы это будете делать - не мое дело. Но рассмотрите утилиту iconv из линуксов)) ей же можете проверить что у вас все правильно.
3 сен 08, 18:46    [6143786]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить