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