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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.