定义introduce是varchar(400)
但是插入字“喆”或者“槃”都不成功、、
网上查了是中文编码的问题,数据库中有个table叫作picture,有个列叫作introduce就用ALTER TABLE `picture` CHANGE `introduce` `introduce` VARCHAR( 400 ) CHARACTER SET gbk COLLATE gbk_bin NULL DEFAULT NULL;语句,在我本机成功了,可以插入上面说的那些个字(“喆”或者“槃”)但是我登陆另一台机子就不行,同样的数据库,同样的语句,都是ALTER TABLE picture CHANGE introduce introduce VARCHAR( 400 ) CHARACTER SET gbk COLLATE gbk_bin NULL DEFAULT NULL;虽然执行这条语句成功了,但是我插入那几个字就是不成功,,,,在那另一台机子我也试了其他的字符编码,就像utf8,Latin1等等,我用ALTER TABLE picture CHANGE introduce introduce VARCHAR( 400 ) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL;或者ALTER TABLE picture CHANGE introduce introduce VARCHAR( 400 ) CHARACTER SET utf8 COLLATE utf8_chinese_ci NULL DEFAULT NULL;或者ALTER TABLE picture CHANGE introduce introduce VARCHAR( 400 ) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL DEFAULT NULL;等等都不行,,,
两台机子的mysql的配置文件my.ini都一样,都是default-character-set=gbk不知道这是为啥了?  研究了一晚上,实在搞不懂了,还请各位大虾帮忙啊。

解决方案 »

  1.   

    我试了一下gbk行,utf8也行!
    my.ini里面设置的是默认编码,是在你没有设置编码方式的时候就使用那个默认的编码,如果你设置的就没用了,my.ini里的就没用了
      

  2.   


    对呀,我用gbk或者utf8在我本机上测试是可以的呀,但是到了服务器上就不行了,就是很奇怪都是同样的mysql语句,为啥执行的结果不一样,一个可以成功,一个失败!@还有哪个配置可能出问题吗?
      

  3.   

    是你的mysql编码问题了,如果是gb2312当然出错了可以选择gbk或utf8配置mysql编码:
    mysql -u root
    >show variables like 'character%';
    +--------------------------+----------------------------+
    | Variable_name | Value |
    +--------------------------+----------------------------+
    | character_set_client | latin1 |
    | character_set_connection | latin1 |
    | character_set_database | latin1 |
    | character_set_filesystem | binary |
    | character_set_results | latin1 |
    | character_set_server | latin1 |
    | character_set_system | utf8 |
    | character_sets_dir | /usr/share/mysql/charsets/ |
    修改mysql的配置文件my.cnf
    nano /etc/mysql/my.cnf
    windows下mysql使用的配置文件是my.ini
    有3个地方需要动的
    [client]下面加上
    default-character-set=gbk
    [mysqld]下面加上
    default-character-set=gbk
    init_connect='SET NAMES gbk'
    保存后重启mysql