![]() |
Задавайте вопросы, мы ответим
Вы не зашли.

Коллеги,
че-то я не понимаю. По-моему, баг:
mysql> SET NAMES utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW CREATE FUNCTION testcharset\G
*************************** 1. row ***************************
Function: testcharset
sql_mode:
Create Function: CREATE DEFINER=`username`@`hostname` FUNCTION `testcharset`() RETURNS varchar(255)
BEGIN
DECLARE c VARCHAR(255) CHARSET utf8;
SET c = 'ФЫВАЭЖ';
RETURN c;
END
1 row in set (0.00 sec)
mysql> SELECT testcharset();
+---------------+
| testcharset() |
+---------------+
| ?????? |
+---------------+
1 row in set, 1 warning (0.00 sec)
mysql> SHOW WARNINGS;
+---------+------+----------------------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------------------+
| Warning | 1265 | Data truncated for column 'testcharset()' at row 1 |
+---------+------+----------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT VERSION();
+------------+
| VERSION() |
+------------+
| 5.0.22-log |
+------------+
1 row in set (0.00 sec)
Неактивен

Похоже бага в SHOW CREATE FUNCTION. У меня определенная функция выдает данные в правильной кодировке, но вот SHOW CREATE FUNCTION не работает.
mysql> select version();
+------------+
| version() |
+------------+
| 5.0.22-log |
+------------+
1 row in set (0.00 sec)
mysql> set names koi8r;
Query OK, 0 rows affected (0.00 sec)
mysql> use test
mysql> CREATE FUNCTION `testcharset`() RETURNS varchar(255) CHARSET utf8 BEGIN DECLARE c VARCHAR(255) CHARSET utf8; SET c = 'ФЫВАЭЖ'; RETURN c; END//
Query OK, 0 rows affected (0.00 sec)
mysql> select testcharset()//
+---------------+
| testcharset() |
+---------------+
| ФЫВАЭЖ |
+---------------+
1 row in set (0.00 sec)
mysql> show create function testcharset\G
*************************** 1. row ***************************
Function: testcharset
sql_mode:
Create Function: CREATE DEFINER=`root`@`localhost` FUNCTION `testcharset`() RETURNS varchar(255)
BEGIN DECLARE c VARCHAR(255) CHARSET utf8; SET c = '??????'; RETURN c; END
1 row in set (0.00 sec)Неактивен

Разместил немного измененный репорт:
http://bugs.mysql.com/bug.php?id=35588&thanks=4
Неактивен

Уже ответили с дополнительным вопросом
Неактивен