论坛是由dvbbs 7.1sp1 sql版转到discuz的
数据库是latin1编码,
在config。inc中强制latin1才能显示正常
但是因为一些插件,以及和其他程序整合,必须改成gbk
想把数据库字符集由latin1转换到gbk
但我使用了无数方法,搜了discuz全论坛,以及百度上的所有办法,都没有能成功,相信我的搜索能力,我的工作是做竞争情报分析的
下面说说我的悲惨的经历:
使用论坛后台功能,参考以下贴子
https://discuz.dismall.com/viewth ... p;extra=&page=1
论坛后台备份成功,但是无法恢复,普通备份和十六进制备份都试过了,把内存限制调大,备份卷改到1m,还是不行,疯了
都出现如下错误
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 8388608 bytes) in /usr/users/cufebbs.com/discuz/admin/database.inc.php on line 423
于是乎想要phpmyadmin导入,结果
Warning: mb_strpos(): Unknown encoding or conversion error. in /usr/local/cpanel/base/3rdparty/phpMyAdmin/libraries/string.lib.php on line 112
Warning: mb_strpos(): Unknown encoding or conversion error. in /usr/local/cpanel/base/3rdparty/phpMyAdmin/libraries/string.lib.php on line 112
Warning: mb_strpos(): Unknown encoding or conversion error. in /usr/local/cpanel/base/3rdparty/phpMyAdmin/libraries/string.lib.php on line 112
错误
这可能是您找到了 SQL 分析程式的一些程式错误,请细心查看您的语法,检查一下引号是正确及没有遗漏,其他可能出错的原因可能来自您上载档案时在引号外的地方使用了二进制码。您可以尝试在 MySQL 命令列介面执行该语法。如 MySQL 伺服器发出错误信息,这可能帮助您去找出问题所在。如您仍然未能解决问题,或在分析程式出现错误,但在命令列模式能正常执行,请将该句出现错误的 SQL 语法抽出,并将以下的"剪取"部份一同提交到臭虫区:
----开始 剪取----
eNp1kM1Kw0AQx+/7FAOKtZjE3U1tm/ViKaEWYluTtiJVJNJqK7GmSattH6NvEOzBkwp6ET14MYs+
gnjz6MGD6E1w4weCIMx/ZnZnmN8wumkWTQZZAlkKhl5gQAgWIkCJhqyyqAUIZasWg8l8nYHfcVzb
8xue4rQ2FbfpSvtAFTUJFOO5WZwWJlJGKRMjnMauBnrfhUm0NLCWDQYJhSgkIftdu123vbrs7G2j
imVC0ZIgk9MLZQmqumCutNqQ1yGpYFRayjCBSCoJ2XUoKi2WohapaEXTVEVgjFa710dGppBjMGx2
D+Red0tOo09gvmDpZlmEchHcg41u02vYdR+qGaOiW9MxFdOYFFNV4bCQsB273SA0+lDTwgWt8fXR
bbAzPV44eeLH4SN/GN1d9uNQu+iMTnNT9q47P6Fq8z6/50f8nD+vQy06hYxT6xAM+Gr4xt3wnVf4
cvh6dsXNYDiuXN2ELzOHa2tfxAhMfiJJEKxqWor8ffzulfzu/V/xD8+AjWg=
----结束 剪取----
----开始 原始资料----
ERROR: C1 C2 LEN: 110 111 219
STR: ?
CVS: $Id: sqlparser.lib.php,v 2.36 2005/08/08 20:22:11 lem9 Exp $
MySQL: 4.1.14-standard-log
USR OS、AGENT、VER: Win IE 6.0
PMA: 2.6.4-pl2
PHP VER,OS: 4.3.11 Linux
LANG: zhtw-utf-8
SQL: INSERT INTO pw_threads VALUES('302','33','0','','jane123','38','?i??ɡj(?@?뇮ƣǜ?ʻx) [?q??G'sǚǨǴǯ] [2005-07] ?yǚƶǰƽǖǒƵ??ǒ?z?U?ņ󫣜\','','0','1','0','1141039971','1141039971','jane123','6','0','0','0','0','0','0','0','0')
----结束 原始资料----
SQL 语法:
INSERT INTO pw_threads VALUES('302','33','0','','jane123','38','?i??ɡj(?@?뇮ƣǜ?ʻx) [?q??G'sǚǨǴǯ] [2005-07] ?yǚƶǰƽǖǒƵ??ǒ?z?U?ņ󫣜\','','0','1','0','1141039971','1141039971','jane123','6','0','0','0','0','0','0','0','0')
MySQL 传回:
#1064 - 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 '0','1','0','1141039971','1141039971','jane123','6','0','0','0','0','0','0','0','' at line 1
只能考虑用mysql直接导出导入
参考了以下几个贴子
https://discuz.dismall.com/thread-408114-1-1.html
http://kb.discuz.net/index.php?t ... 7.E7.AC.A6.E9.9B.86
把数据导为mysql4.0的格式,具体的命令如下: mysqldump -uroot -p --default-character-set=latin1 --set-charset=gbk --skip-opt databse > test.sql
首先使用下面语句新建一个GBK字符集的数据库(test)
CREATE DATABASE `test` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
然后把刚才导出的数据导入到当前的数据库中就ok了。
mysql -uroot -p --default-character-set=gbk -f test<test.sql
但是依然导入不进去
出现错误
ERROR 1062 (23000) at line 440260: Duplicate entry '354419' for key 1
ERROR 1062 (23000) at line 440261: Duplicate entry '354420' for key 1
ERROR 1062 (23000) at line 440262: Duplicate entry '354421' for key 1
ERROR 1062 (23000) at line 440263: Duplicate entry '354422' for key 1
ERROR 1062 (23000) at line 440264: Duplicate entry '354423' for key 1
ERROR 1062 (23000) at line 440265: Duplicate entr
此外我还试过ebak,restore。php的备份恢复工具--失败!
我要死了!
服务器配置:
服务器软件: Apache/2.0.52 (Red Hat) 操作系统 : Linux
PHP版本 : 4.4.1 MYSQL版本 : 4.1.12
全局变量 : 打开 上传文件 : 可以
登陆者IP : 125.96.24.22 当前时间 : 2006-11-07 00:52:17
程序版本 : Ebak Version 1.3 使用域名 : www.cufebbs.com
[ 本帖最后由 ~云飞满天~ 于 2006-11-7 23:43 编辑 ] |