MySQL: как подружить ХП с кириллицей?
От: RWolf Россия  
Дата: 01.04.07 16:39
Оценка:
Такая проблема — когда вызываю хранимую процедуру и передаю ей параметром строку с кириллицей, запросы внутри ХП не выполняются, как если бы я попытался выполнить запрос без указания кодировки строки. Как иллюстрация — лог консольного клиента:

mysql> insert into servers (server_name) values ('тест');                       -- тестовый запрос - неудача
ERROR 1406 (22001): Data too long for column 'server_name' at row 1
mysql> insert into servers (server_name) values (_cp1251'тест');                -- то же, явно указываем кодировку строки - норма
Query OK, 1 row affected (0.03 sec)

mysql> select log_server(_cp1251'тест');                                        -- пытаемся вызвать ХП таким же образом
ERROR 1406 (22001): Data too long for column 'pSERVER_NAME' at row 1
mysql>


Что сделать с ХП (базой, настройками сервера), чтобы избежать такой ситуации?


для справки — структура данных:

CREATE TABLE `servers` (
  `server_id` int(11) NOT NULL auto_increment,
  `server_name` varchar(20) NOT NULL,
  PRIMARY KEY  (`server_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8    -- пробовал cp1251, не влияет


CREATE FUNCTION `LOG_SERVER`(
    pSERVER_NAME VARCHAR(20)
) RETURNS int(11)
BEGIN
   INSERT INTO SERVERS (SERVER_NAME) VALUES (pSERVER_NAME);
   RETURN LAST_INSERT_ID();
END
Re: MySQL: как подружить ХП с кириллицей?
От: _kaimonomah_  
Дата: 02.04.07 05:39
Оценка:
Здравствуйте, RWolf, Вы писали:

RW>Такая проблема — когда вызываю хранимую процедуру и передаю ей параметром строку с кириллицей, запросы внутри ХП не выполняются, как если бы я попытался выполнить запрос без указания кодировки строки. Как иллюстрация — лог консольного клиента:


RW>
mysql>> insert into servers (server_name) values ('тест');                       -- тестовый запрос - неудача
RW>ERROR 1406 (22001): Data too long for column 'server_name' at row 1
mysql>> insert into servers (server_name) values (_cp1251'тест');                -- то же, явно указываем кодировку строки - норма
RW>Query OK, 1 row affected (0.03 sec)

mysql>> select log_server(_cp1251'тест');                                        -- пытаемся вызвать ХП таким же образом
RW>ERROR 1406 (22001): Data too long for column 'pSERVER_NAME' at row 1
mysql>>
RW>


RW>Что сделать с ХП (базой, настройками сервера), чтобы избежать такой ситуации?


Попробуй команду 'set character set cp1251;' после подключения к базе данных
Re[2]: MySQL: как подружить ХП с кириллицей?
От: RWolf Россия  
Дата: 02.04.07 06:29
Оценка:
RW>>Что сделать с ХП (базой, настройками сервера), чтобы избежать такой ситуации?
__>Попробуй команду 'set character set cp1251;' после подключения к базе данных

Да, это решило проблему, спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.