原来采用的是mysql-5.5.28安装版,为了能够改善部分电脑安装不顺利的问题,下载了mysql-5.6.12-win32.zip版。目前能够正常启动,也能够把原数据库的数据和存储过程导入。
现在遇到的问题就是通过存储过程输入中文就提示错误,直接insert语句能够插入中文。
mysql>  insert into tb_office value (1,'营业点1');
Query OK, 1 row affected (0.05 sec)mysql> select * from tb_office;
+-----------+---------+
| OFFICE_ID | office  |
+-----------+---------+
|         1 | 营业点1 |
+-----------+---------+
1 row in set (0.00 sec)mysql> call inserttboffice(2,'营业点2');
ERROR 1366 (HY000): Incorrect string value: '\xD3\xAA\xD2\xB5\xB5\xE3...' for co
lumn 'p_office' at row 2
mysql> show create procedure inserttboffice;
+----------------+--------------------------------------------------------------
--+-----------------------------------------------------------------------------
--------------------------------------------------------------------------------
----------------------------------------+----------------------+----------------
------+--------------------+
| Procedure      | sql_mode
  | Create Procedure                                        | character_set_client | collation_conne
ction | Database Collation |
+----------------+--------------------------------------------------------------
--+-----------------------------------------------------------------------------
--------------------------------------------------------------------------------
----------------------------------------+----------------------+----------------
------+--------------------+
| inserttboffice | STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIO
N | CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `inserttboffice`(p_officeid SMAL
LINT UNSIGNED, p_office VARCHAR(20))
BEGIN
INSERT INTO TB_OFFICE ( OFFICE_ID,OFFICE ) VALUES (p_officeid,p_office);
END | utf8                 | utf8_general_ci      | latin1_swedish_ci  |
+----------------+--------------------------------------------------------------
--+-----------------------------------------------------------------------------
--------------------------------------------------------------------------------
----------------------------------------+----------------------+----------------
------+--------------------+
1 row in set (0.00 sec)
谢谢大家帮忙

解决方案 »

  1.   

    在存储过程里加set names gbk;或者utf8
      

  2.   

    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  3.   

    存储过程的第一句就写setnames,然后再写插入数据的语句
      

  4.   

    感谢各位的回复,后面我是通过my.ini中的配置解决的。
    这个配置内容也是我们站内其它帖子上找到,好像是ACMAIN_CHM版主的,做了一点添加。
    解决的方法就是设置下面两个utf8,贴出相应的内容
    ------------------------------------------------------
     [client]
     default-character-set=utf8 # pipe
     # socket=mysql
     port=3306 [mysql] default-character-set=utf8
    ----------------------------------