标题: 论坛从 VBB 转到 Discuz 的痛苦经历
cjc


软件作者



UID 1
精华 18
积分 2773
帖子 1467
威望 2773
金钱 72
阅读权限 200
注册 2002-5-7
发表于 2007-10-17 23:56  资料  个人空间  短消息  加为好友 
论坛从 VBB 转到 Discuz 的痛苦经历

数据库从mysql 4.0 迁移到 5.0, 然后又迁到5.1上,编码已经乱了。为解决这个乱码的问题,花了整一周的时间才理清线索。

2004年:
新建论坛, mysql4+vbb3.0 (vbb使用latin1连接)   -- phpmyadmin显示正常,vbb 3.0显示正常


2006年:
转到另一服务商,原导出的dump数据是latin1编码存储的, mysql5服务器使用的编码是utf-8, 别的编码存储的时候,都会转到utf-8保存,  新服务商导入时, 不知道是怎么操作的,变成导入后存储在db中实际数据格式还是latin1而不是utf-8, 这好处是我使用的vbb3.0使用latin1连接读出的数据正常,不乱码,但用新的phpmyadmin和vbb3.5都是乱码。-- phpmyadmin显示乱码,vbb 3.0显示正常


2007年:
转回原服务商,mysql5+discuz  5.5,  由于上一服务商的mysql5服务器使用的编码是utf-8, 我的数据在数据器上却实际还是latin1的, 所以在我用phpmyadmin导出的时候,进行了一次utf-8反编码,打开导出的.sql文件一看,导出的中文全是乱码,而编码说明上写的是 DEFAULT CHARSET=latin1 (其实这是进行过一次utf-8反编码的latin1),所以我再用什么方法导入到新的mysql5.1中,都是乱的。而且发觉比上一服务商里用phpmyadmin里看到的更乱。我装上旧的3.0vbb看到的也是乱码。我想,至少要导入后的数据,看起来和原来的乱得一样,用vbb3.0才能看到正常汉字。
我把导出的.sql表中所有的 "DEFAULT CHARSET=latin1"  用文本编辑器替换成了 "DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci", 保存,然后在用phpmyadmin导入时,编码选 binary, 导入后,发现用phpmyadmin看竟然和原来的乱到一模一样了,用vbb3.0又可以看到中文了。

但要转换到discuz, 必须让phpmyadmin也能看到正常中文才可以。
(如果导出的时候,用原来的3.0vbb进admin后台导出数据,可能能得到正确的编码,不过我的网页已经被上一服务商禁止访问了,手上只剩下.sql的备份。)

后来找到个软件navicat8.0, 在建连接的时候,选mysql 字符集 GBK encoding, 数据为的encoding和 collation 都选GBK,连接db的时候报了个错误提示 "1253 - COLLATION utf8_bin is not valid for CHARACTER SET latin1",忽略后,进去看表,竟然是正常中文!! 尝试做Sql dump,服务器返回和上面一样的1253错,不能直接dump.

只能用Export功能,把表一个接一个的手工导出成GBK文件。累!
后来想了一下,转到discuz后很多表都没用了,只要把重要的几个表导出就行:
forum
thread
post
user
language
phrase
setting
我怀疑只要前面4个就行了,后3个可能都不需要。
导出后,把所有表合并到一个文件,然后用phpmyadmin导入到vbb3.68的数据库中(与上面相应的表要先清空). 编码选gbk (与export保存的格式要一样)

vbb3.68里终于可以看到正常的汉字了。

安装一个新的discuz5, 然后用vbb368转discuz5.5的php转换程序,顺利转到discuz。

至此,迁移成功!!





后来发现,转过后的贴子里的图片附件,都要点击才能打开的,开始以为是设置问题,查了设置,设置是对的。
用phpmyadmin打开discuz的附件库cdb_attachments看了一下,发现有个字段 isimage (是图片?), 里面的值全是0,说明从vbb转过来的图片都当成一般附件了,所以看贴子时不直接打开。
用下面句子在phpmyadmin里处理一下,问题解决。

update cdb_attachments set isimage = 1 where (filename like '%.bmp') or (filename like '%.png') or (filename like '%.jpg') or (filename like '%.gif')



CJC 2007.

顶部
cjc


软件作者



UID 1
精华 18
积分 2773
帖子 1467
威望 2773
金钱 72
阅读权限 200
注册 2002-5-7
发表于 2007-10-18 21:54  资料  个人空间  短消息  加为好友 
Discuz 5.5小bug

发现 discuz 5.5一个小Bug, 多处刷新注册码的中文提示都显示成!secode_refresh!, 原因是template_language.php中定义的变量是 seccode_refresh, 而模板中却用了 secode_refresh (少了一个c).  解决办法是 在template_language.php中增加多一行 secode_refresh的变量,或者逐一替换模板中的secode_refresh为seccode_refresh.

顶部
cjc


软件作者



UID 1
精华 18
积分 2773
帖子 1467
威望 2773
金钱 72
阅读权限 200
注册 2002-5-7
发表于 2010-5-19 12:43  资料  个人空间  短消息  加为好友 
Discuz 6.1 中,动态修改全部变量的位置:
在 include/common.inc.php 文件中,找到 @extract($_DCACHE['settings']);  
在该行后面修改就可以,比如 $bbname, $seotitle 等

增加全局用的子程序:
在  include/global.func.php 里

设置论坛 每页显示主题数, 主凸最大显示页数:
admincp.php -> 全局 -> 界面与显示 -> 主题列表页 -> 主题列表最大页数:

设置验证码与验证问题:
admincp.php -> 全局 -> 防灌水设置

Tag标签管理:
全局 -> 论坛功能 -> 主题标签(TAG

顶部
cjc


软件作者



UID 1
精华 18
积分 2773
帖子 1467
威望 2773
金钱 72
阅读权限 200
注册 2002-5-7
发表于 2010-5-25 01:52  资料  个人空间  短消息  加为好友 
discuz 6.1 中一个奇怪的bug

在开启问题验证功能后,无法提交新贴子,长时间查错后,发现有一个语句有问题

include/seccheck.htm 文件 第40行:

<input type="text" name="secanswer" onBlur="checksecanswer()" size="25" maxlength="50" tabindex="2" />

应该增加 id="secanswer" , 变成:

<input type="text" id="secanswer" name="secanswer" onBlur="checksecanswer()" size="25" maxlength="50" tabindex="2" />

顶部
cjc


软件作者



UID 1
精华 18
积分 2773
帖子 1467
威望 2773
金钱 72
阅读权限 200
注册 2002-5-7
发表于 2010-7-17 09:06  资料  个人空间  短消息  加为好友 
设置连接为红色字

使用 style="text-decoration:none",再设字体颜色: cjc Home

<a href="http://xcjc.net" style="text-decoration:none">[color=red][u]cjc Home[/u][/color]</a>


顶部
cjc


软件作者



UID 1
精华 18
积分 2773
帖子 1467
威望 2773
金钱 72
阅读权限 200
注册 2002-5-7
发表于 2010-9-26 17:02  资料  个人空间  短消息  加为好友 
安装discuz后,不能上传图片,就把所有目录权限设置为777, 结果报 500 Internal Server Error 错误,把所有权限设置为775后不再报 500 Internal Server Error 的错误。

重新安装discuz后就能上传图片了。

顶部
cjc


软件作者



UID 1
精华 18
积分 2773
帖子 1467
威望 2773
金钱 72
阅读权限 200
注册 2002-5-7
发表于 2010-9-26 22:12  资料  个人空间  短消息  加为好友 
Discuz 7.2 用户无法上传头像,报 db connect error (无权限).

因icdsoft默认是mysql4, 用mysql5的需另外设置变量。

1. 先查UC(user center) 能否正常通信,发现真的是连接不正常.
  UCenter -> 应用管理 -> 编辑, 把 应用IP那项的 127.0.0.1 清空,之后测试正常

但uc正常后,还是不能上传图象

2.  修改 uc_server/data/config.inc.php,在最前面增加一行
ini_set('mysql.default_socket', '/tmp/mysql5.sock');

之后,头像上传正常。

顶部
 



当前时区 GMT+8, 现在时间是 2024-5-4 04:42

粤ICP备2021113670号
访问量: - 清除 Cookies - 联系我们 - CJC学习与技术分享