mysql不能通过存储过程插入保加利亚字符,只能通过命令

时间:2014-12-23 12:06:45

标签: mysql ubuntu stored-procedures utf-8

Ubuntu 12.04,mysql Ver 14.14 Distrib 5.6.22

如果我通过命令行插入,一切正常:

insert into LocationState (Value, LocationCountryId) VALUES ('Благоевград / Blagoevgrad', 1);
  

查询正常,1行受影响(0.05秒)

如果我从同一个shell调用存储过程,我会收到错误:

call addState('Благоевград / Blagoevgrad', 'BG');
  

ERROR 1366(HY000):字符串值不正确:' \ xD0 \ x91 \ xD0 \ xBB \ xD0 \ xB0 ......'对于列'州'在第31行

全部设置为utf8,这是sp:

CREATE DEFINER=`root`@`localhost` PROCEDURE `addState`(
   IN state   VARCHAR(128),
   IN country VARCHAR(2)
)
    MODIFIES SQL DATA
BEGIN

   INSERT INTO `LocationState` (`Value`, `LocationCountryId`) VALUES 
   (
      state, 
      (SELECT `Id` FROM `LocationCountry` WHERE `ShortValue` = country) 
   );

END

我还尝试了一个SET NAMES' utf8'在sp但没有运气。

我还能做什么?

顺便说一句:保加利亚语以及俄语等等

0 个答案:

没有答案