一个游戏服务端,从一个服务器移植到另一个服务器
原数据库为mysql 5.0.22,安装有两个实例对应两个数据库
移植后的数据库为mysql 5.5.22,安装有两个实例对应两个数据库
原数据库my.conf配置参数为
default-character-set=gbk
init_connect=set names binary
skip-character-set-client-handshake
skip-name-resolve
新数据库编译安装,字符集为gbk,
my.conf中加上参数default-character-set=gbk,无法启动服务
百度后改为character_set_server=gbk,游戏客户端只能登陆不能进游戏
去掉skip-character-set-client-handshake参数,可进,但有乱码问题出在哪?

解决方案 »

  1.   

    skip-character-set-client-handshake,加上这个参数,可以登陆,无乱码,但不能进游戏
    不加这个参数有乱码,但可以进游戏
    这个参数影响哪些方面
      

  2.   

    还是字符集出现问题。
    show variables like 'char%'
    set names 'gbk';
      

  3.   

     SHOW VARIABLES LIKE 'character%';
    +--------------------------+----------------------------------------+
    | Variable_name            | Value                                  |
    +--------------------------+----------------------------------------+
    | character_set_client     | gbk                                    |
    | character_set_connection | gbk                                    |
    | character_set_database   | gbk                                    |
    | character_set_filesystem | binary                                 |
    | character_set_results    | gbk                                    |
    | character_set_server     | gbk                                    |
    | character_set_system     | utf8       可是已经设置过了
      

  4.   

    又想起这个问题来了,这是一个网络单机服务端,架设在linux系统上,但是这个linux系统是在虚拟机里的,我打算把服务端提取出来,直接在linux系统上架设.数据库通过两个实例来实现,现在的问题是游戏客户端有乱码,登录界面,数据库内的用户名都是乱码,其他正常,就算统一了字符集,依然有乱码,怀疑是客户端的问题,但客户端又改不了.原虚拟机linux系统中的mysql配置文件里有skip-character-set-client-handshake这个设置,可是我在自己的mysql配置文件中加入这一行后,登录乱码没有了,但选择人物后进不了游戏,查看日志发现客户端函数调用地图文件时出错,可是不加skip-character-set-client-handshake,就可以登录游戏,除了乱码,一切正常.
    搜索skip-character-set-client-handshake也搜不到太多有用的信息,费解的是虚拟机linux系统的配置文件带这个参数,却不会调用出错.数据库用navicat for mysql进行的数据传输.
      

  5.   

    晚上找个相同版本的mysql试一下,解决不了总放不下.
      

  6.   

    原因大概找到了,是数据库里韩文读取错误,服务器端可以正常启动,但运行一段时间后,会出错导致服务器关闭.出错信息如下:
    2013-09-24 22:46:19 : void DBExecuteUnit::ProcessExecQuery() : SQLQueryException : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''痋'', '', 21000, 4, 0) -- optionType=(175 39 ) ThirdOptionType=(NONE)' at line 1
     Result* Statement::executeQuery(const stlp_std::string&)
      Result* Statement::executeQuery()