帝国论坛帝国软件产品与服务帝国备份王花了一夜的时间转了一个库的编码ebbfaint: 【本版专题贴子】  
主题:花了一夜的时间转了一个库的编码ebbfaint: [加入收藏夹]   

smilingboy
用户头衔:举人 *

精华贴   :0
发贴数   :290
经验值   :1262
注册时间:2006-08-03
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 1 楼]
花了一夜的时间转了一个库的编码ebbfaint:
转了一个OA数据库的编码,花了一夜的时间,累到最后写点东西,都是关于编码转换的:

备份王确实好用,但不是通用的,对于OA这样有大量用户输入的数据库,备份王可能不行.

虽然理论上数据库中已有的内容,格式肯定合乎数据库规范,但好像是WC只是在读取数据库的时候用了去掉了魔术引号,但写入时没添加上~~~

有个别数据库或表会怪异到无法解释:我使用正常,用phpmyadmin也正常,但用备份王无论如何备份不了或恢复不了~~~我碰到了前者,开始一位是备份的表太多或数据量太大,减少到单独备份这一个表也不行,无语了!

不过WC对备份王的错误信息处理得不好,备份恢复如果出错,显示给用户的是一个"白脸",看着就迷茫啊,能不能提示下,到哪个表出了问题,抑或是整个库就不行?

而且备份王对备份文件处理有些不太通融,备份出来的文件明明都是email1.php,email2.php,sms1.php~~我把config.php里面sms的相关变量删除,把sms1.php删掉竟然还是提示sms1.php找不到,如果我真的想恢复除sms表之外的内容——我就唯有再备份一次,如果这个备份是我几个小时等到的结果呢?代价高了点,我觉得让他自动识别文件,其实不难


不过凭良心说话,要感谢WC,没有备份王的话我没这些牢骚,有了,用了,倒是说起不足来了——偶声明,仅仅是善意的建议,没有恶意的批评,毕竟我们期待WC和他团队的东西远不止备份王,但下一个版本的备份王,能采纳下不?

最后补充一下WC关于数据库编码转换的方案:
WC的原文:

mysql数据表编码转换为gbk方法:
1、先备份discuz数据库的数据,以防万一
2、用帝国备份王备份数据:
 (1)、备份注意事项1:参数设置中要选择服务器使用的mysql版本
 (2)、备份注意事项2:备份时不选择默认编码
3、新建一个gbk编码的数据库(用phpmyadmin建)
4、恢复数据并转换数据表编码为gbk:
  (1)、到备份王的参数设置,把mysql版本设为4.0,并把默认编码设为gbk
  (2)、然后将备份王备份的数据恢复到新建的gbk编码数据库即可转换编码完毕。
5、修改discuz的数据库配置文件,将数据库改为新建的数据库名,并且将这项的值设为gbk:$dbcharset = 'gbk';
6、完成


补充:

4(1.5)对于编码修改涉及字段编码的,需要将备份文件中字段编码修改为目的编码,否则会出错或编码不改变


这个方案可以扩展,未必只用在目的编码是gbk的转换上,而且这个转换可以作为备份王的一个内置方案,不知道WC对内置几套方案的思路赞同不赞同~~



最后再谢谢WC(很久不来论坛了,不知道WC是不是把备份王交给帝兴公司做了)




2007-11-15 08:06:10 已设置保密 顶部 回复 引用 报告 编辑 删除

wm_chief
用户头衔:管理员

精华贴   :21
发贴数   :48941
经验值   :114161
注册时间:2002-10-30
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 2 楼]

为了编码转换方便,下版会加上恢复到4.0格式,这样只需备份选择恢复到4.0格式,然后建gbk编码恢复即可。
如要数据库大可以选择按记录数恢复,这个速度与效率更高(或每组备份数改小)。
关于提示空白页这应该是php超时了(如果php没屏蔽错误应该会显示)。
关于不想恢复哪个表的话,用editplus或记录本打开相应的文件,把里面的sql语句去掉就可以了,不需要重新备份。

至于去掉魔术引号这个是怎么回事,是数据内容中去掉的还是?

再次感谢smilingboy的反馈与建议。



[零基础入门教程] [模板制作教程] [采集使用教程]
2007-11-15 09:37:08 已设置保密 顶部 回复 引用 报告 编辑 删除

smilingboy
用户头衔:举人 *

精华贴   :0
发贴数   :290
经验值   :1262
注册时间:2006-08-03
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 3 楼]

原帖由 wm_chief 于 2007-11-15 09:37:08 发表

至于去掉魔术引号这个是怎么回事,是数据内容中去掉的还是?



是恢复数据库的时候没有addsplash()处理吧?觉得你不会忘记这个,呵呵

有人在内容中输入了一个文字组成的图案,里面N多'(单引号) ,结果就恢复失败了,把那一句修改之后就好了




2007-11-15 09:55:28 已设置保密 顶部 回复 引用 报告 编辑 删除

smilingboy
用户头衔:举人 *

精华贴   :0
发贴数   :290
经验值   :1262
注册时间:2006-08-03
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 4 楼]

原帖由 wm_chief 于 2007-11-15 09:37:08 发表
关于不想恢复哪个表的话,用editplus或记录本打开相应的文件,把里面的sql语句去掉就可以了,不需要重新备份。



这个还真就忘了,当时一边重新备份,一边抱怨,WC啊,我想睡觉啊,哈哈




2007-11-15 09:59:52 已设置保密 顶部 回复 引用 报告 编辑 删除

wm_chief
用户头衔:管理员

精华贴   :21
发贴数   :48941
经验值   :114161
注册时间:2002-10-30
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 5 楼]

原帖由 smilingboy 于 2007-11-15 09:55:28 发表



是恢复数据库的时候没有addsplash()处理吧?觉得你不会忘记这个,呵呵

有人在内容中输入了一个文字组成的图案,里面N多'(...

哦,这个稍后会检查下。

PS:你不会昨到到现在还没睡觉。。



[零基础入门教程] [模板制作教程] [采集使用教程]
2007-11-15 10:08:18 已设置保密 顶部 回复 引用 报告 编辑 删除

快速回复
内容

表情
使用EBB代码 使用smile代码 显示签名 自动分析url 自动分析img
     【进入高级模式】   (按 Ctrl+Enter 直接提交)
    顶部  加入收藏夹
关于帝国 | 广告服务 | 联系我们 | 法律声明 | 隐私条款 | 许可协议
Powered by: EBB Version 2.2.1