SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 18.12.2011 12:22:17

cyberman
Участник
Зарегистрирован: 18.12.2011
Сообщений: 7

Проблема с кодировкой при использовании процедур

Здравствуйте. Возникла проблема с кодировкой при использовании процедур. Сама база в utf8 и там уже есть записи с разной кодировкой, но при вставке или обновлении заносится одни вопросительные знаки. Дело в том что при обычном запросе все работает, проблема при использовании процедур. У меня на локалке все работает, на сервере нет. Думал проблема с моими php скриптами, но прямо на сервере phpmyadmin тоже самое делает. Не подскажите в чём может быть причина?

Неактивен

 

#2 18.12.2011 14:01:34

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Проблема с кодировкой при использовании процедур

Указывайте кодировку параметров процедуры явным образом.
По умолчанию для них используется кодировка базы.
If there is no CHARACTER SET attribute, the database character set and collation in effect at routine creation time are used. (The database character set and collation are given by the value of the character_set_database and collation_database system variables.)

http://dev.mysql.com/doc/refman/5.5/en/ … edure.html

Неактивен

 

#3 18.12.2011 14:25:09

cyberman
Участник
Зарегистрирован: 18.12.2011
Сообщений: 7

Re: Проблема с кодировкой при использовании процедур

При каких запросах сервер выдает


SHOW VARIABLES LIKE 'char%';
SHOW VARIABLES LIKE 'coll%';
 



character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir/usr/share/mysql/charsets/


collation_connection utf8_general_ci
collation_databasela tin1_swedish_ci
collation_server latin1_swedish_ci
 


Там не везде utf8. Если все перевести на utf8, проблема по идее должна решиться? Только я не понял как в процедуре явно указать кодировку? При создании таблицы явно указать кодировку utf8

Неактивен

 

#4 18.12.2011 14:38:58

cyberman
Участник
Зарегистрирован: 18.12.2011
Сообщений: 7

Re: Проблема с кодировкой при использовании процедур

Вот таблица и процедура


CREATE TABLE `cam_debug`(
    `id` TINYINT(3) UNSIGNED NOT NULL AUTO_INCREMENT,
    `text` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
    PRIMARY KEY(`id`)
)ENGINE=InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
 



    CREATE PROCEDURE SP_DEBUG(IN _DEBUG_TEXT VARCHAR(255))
    BEGIN
       
        INSERT INTO `cam_debug`(`text`) VALUES(_DEBUG_TEXT);

    END
 

Неактивен

 

#5 18.12.2011 14:45:39

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Проблема с кодировкой при использовании процедур

Если вы для параметров процедуры явно не указали кодировку, то используется character_set_database, которая в вашем случае имеет значение latin1

cyberman написал:

Только я не понял как в процедуре явно указать кодировку?

CREATE PROCEDURE SP_DEBUG(IN _DEBUG_TEXT VARCHAR(255) charset utf8)

Неактивен

 

#6 18.12.2011 14:59:53

cyberman
Участник
Зарегистрирован: 18.12.2011
Сообщений: 7

Re: Проблема с кодировкой при использовании процедур

Спасибо. А если на сервере поменять настройку character_set_database на utf8, можно будет обойтись без изменения процедуры? Процедур уже много и я могу их попросить это сделать.
Просто я на локалке явно указал character-set-database=latin1 в my.ini [client], но несмотря на неправильную кодировку работает без проблем.

Неактивен

 

#7 18.12.2011 15:03:28

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Проблема с кодировкой при использовании процедур

If there is no CHARACTER SET attribute, the database character set and collation in effect at routine creation time are used.

Т.е. вам придется пересоздать процедуры при правильно указаном character_set_database.

Неактивен

 

#8 18.12.2011 15:05:41

cyberman
Участник
Зарегистрирован: 18.12.2011
Сообщений: 7

Re: Проблема с кодировкой при использовании процедур

Спасибо, понял.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson