请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Discuz! 官方站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Discuz! X 最新研发动态 通过这个窗口,关注跟踪我们的研发进展 Discuz! 开发技术文库 - 给官方提建议

Discuz! X2 正式版下载 帮助网站实现一站式服务  商业支持服务咨询 下载 - 安装 - 常见问题 - 转换 - 讨论 - 购买

2012站长年会开启报名 限量船票免费发放 Discuz!十大荣誉用户评选 - Discuz!NT3.6发布 漫游引入QQ空间游戏 -一骑新区横扫三国-5d6d免费论坛

查看: 1013|回复: 4

我是不是命该当绝啊,所有导入数据的方法我都试过了! [复制链接]

Rank: 6Rank: 6

UID
178659
积分
1055
帖子
934
威望
23
在线时间
32 小时
注册时间
2005-3-11
发表于 2006-11-7 23:38:50 |显示全部楼层
论坛是由dvbbs 7.1sp1 sql版转到discuz的

数据库是latin1编码,
在config。inc中强制latin1才能显示正常
但是因为一些插件,以及和其他程序整合,必须改成gbk
想把数据库字符集由latin1转换到gbk
但我使用了无数方法,搜了discuz全论坛,以及百度上的所有办法,都没有能成功,相信我的搜索能力,我的工作是做竞争情报分析的

下面说说我的悲惨的经历:


使用论坛后台功能,参考以下贴子
http://www.discuz.net/viewthread ... 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直接导出导入
参考了以下几个贴子
http://www.discuz.net/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  
一个好人!

King

Discuz! Free Helper

Rank: 6Rank: 6

UID
234266
积分
2348
帖子
1538
威望
99
在线时间
0 小时
注册时间
2005-8-11
发表于 2006-11-8 00:10:18 |显示全部楼层
QUOTE:
原帖由 ~云飞满天~ 于 2006-11-2 23:12 发表
Discuz! info: MySQL Query Error

User: 梦想飞扬
Time: 2006-10-29 7:01pm
Script: /admincp.php

SQL: INSERT INTO cdb_rsscaches VALUES ('1162118365','8','314','1158769787','+ 海賊\\\\\\\\\\\\\ ...

我先说第二个问题吧,这是因为你在备份的时候产生的错误,引号不配对,你可以找到这一句,加上后引号

如果这个问题比较多,可以尝试用十六进制备份



上面一个问题,备份的时候产生编码混用,大多是因为你没有完全改成gbk,还存在latin1没有修改
欢迎大家点击这里光临我的博客
寻求Discuz!帮助请短信联系我(Discuz! Free Helper团队唯一成员)

使用道具 举报

Rank: 6Rank: 6

UID
178659
积分
1055
帖子
934
威望
23
在线时间
32 小时
注册时间
2005-3-11
发表于 2006-11-8 00:12:04 |显示全部楼层
我用十六进制备份了,还是恢复不进
一个好人!

使用道具 举报

King

Discuz! Free Helper

Rank: 6Rank: 6

UID
234266
积分
2348
帖子
1538
威望
99
在线时间
0 小时
注册时间
2005-8-11
发表于 2006-11-8 00:15:17 |显示全部楼层
先十六进制备份,然后修改latin1为gbk,注意一个都不要漏掉,漏掉一个就会有问题

然后再导入。如果导入时有错误,看看时哪里的错误,把错误的部分整句删除,再导
欢迎大家点击这里光临我的博客
寻求Discuz!帮助请短信联系我(Discuz! Free Helper团队唯一成员)

使用道具 举报

Rank: 6Rank: 6

UID
178659
积分
1055
帖子
934
威望
23
在线时间
32 小时
注册时间
2005-3-11
发表于 2006-11-8 01:10:56 |显示全部楼层
原帖由 Illumi 于 2006-11-8 00:15 发表
先十六进制备份,然后修改latin1为gbk,注意一个都不要漏掉,漏掉一个就会有问题

然后再导入。如果导入时有错误,看看时哪里的错误,把错误的部分整句删除,再导


其实我本地是导入成功的,用的是discuz EXP

在服务器上死活不行
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
一个好人!

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

fastpost

手机版|Archiver|北京康盛新创科技有限责任公司 ( 京ICP证110024号|京网文[2011]0019-007号 )  

GMT+8, 2012-2-13 08:01 , Processed in 0.081378 second(s), 14 queries , Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部