Loving Coding & Visual Design
数据库编码导致discuz无法登录和注册
昨天帮客户买了VPS迁移网站。本来想着一会的的功夫,没想到倒也折腾了很久。从一开始备份网站程序、数据库都很顺利,到下单VPS,构建FTP server和IIS6的PHP+Mysql环境,似乎一切顺风顺水。可是等到网站恢复的时候,却发现discuz论坛的无登录和注册,验证码始终报错。
本以为是config.inc.php里UC_KEY和UCenter不对,登录Uc_server重新生成新的KEY后,发现通信成功,但是问题依旧。又开始怀疑是不是程序有问题,于是从logging.php一直追踪到uc_client的control->user->onlogin,这才发现还是方向不对。
考虑到旧的数据库是4.0,新的数据库是5.0。会不会导入数据的时候出错?万万没想到恰恰是数据库的问题,让我重第一步就犯下了致命错误。我忽略了一个细节,旧的服务器数据库编码默认是latin1,而新的utf-8编码。由于编码的不同,table的字段长度会发生变化,例如:
这种毁灭性的变化,不但让数据添加有问题,表格本身也千疮百孔,无法修改。以至于出现了discuz无法正常登陆的诡异现象。其实之前重新生成UC_KEY的时候就发现了一个现象,IP地址保存后变成了5位:216.1,但是当时没有特别在意这个问题。这是一个教训。
本以为是config.inc.php里UC_KEY和UCenter不对,登录Uc_server重新生成新的KEY后,发现通信成功,但是问题依旧。又开始怀疑是不是程序有问题,于是从logging.php一直追踪到uc_client的control->user->onlogin,这才发现还是方向不对。
考虑到旧的数据库是4.0,新的数据库是5.0。会不会导入数据的时候出错?万万没想到恰恰是数据库的问题,让我重第一步就犯下了致命错误。我忽略了一个细节,旧的服务器数据库编码默认是latin1,而新的utf-8编码。由于编码的不同,table的字段长度会发生变化,例如:
latin1: ip varchar(15) -> utf8: ip varchar(5)
latin1: charset varchar(8) -> utf8: charset varchar(2)
这种毁灭性的变化,不但让数据添加有问题,表格本身也千疮百孔,无法修改。以至于出现了discuz无法正常登陆的诡异现象。其实之前重新生成UC_KEY的时候就发现了一个现象,IP地址保存后变成了5位:216.1,但是当时没有特别在意这个问题。这是一个教训。
最 近 文 章
- Ucenter的终极通信失败 - Thu, 06 Jan 2011 21:22:39 +0000
- 再探香港奶粉 - Wed, 05 Jan 2011 15:38:06 +0000
- Windows7下面为Apache2.2增加OpenSSL支持 - Tue, 28 Dec 2010 05:39:10 +0000
- IE9下文字阴影问题 - Sun, 19 Dec 2010 15:35:35 +0000
- 郁闷的Away3D未定义linestyle问题 - Wed, 15 Dec 2010 16:14:47 +0000
- 关于中国电信的植入性广告 - Sun, 21 Nov 2010 06:07:59 +0000
- Dos下的ghost备份 - Fri, 19 Nov 2010 04:08:55 +0000
- haXe常见问题 - Mon, 15 Nov 2010 16:21:56 +0000
- Discuz搜索页面空白的问题 - Tue, 02 Nov 2010 05:20:31 +0000
- 制作手机播放的3GP视频 - Sun, 31 Oct 2010 03:58:52 +0000