找回密码
 加入我们
搜索
热搜: 活动 交友 discuz
查看: 2780|回复: 4

论坛数据库本地discuz6.0升级7.0中

[复制链接]
发表于 2011-3-8 10:05:56 | 显示全部楼层 |阅读模式
遇到的问题和解决方法,

尴尬的发现,论坛的MYSQL数据库使用了UTF8编码存储了GBK内容-_-b

MYSQL数据库存储格式为UTF-8,
可内容是按照GBK编码存储的,读取的时候使用GB2312显示倒是正常,可升级的时候麻烦了:因为Discuz7.0要使用MYSQL5.0 它的升级程序要检测数据库编码的,
显示提醒
“您的配置文件 (./config.inc.php) 中的字符集 GBK 与表的字符集 UTF8 不匹配。”

手动将备份文件中的
  1. DEFAULT CHARSET=gbk
复制代码
替换成
  1. DEFAULT CHARSET=gbk
复制代码
然后恢复数据库后发现论坛显示乱码
分析:因为最初论坛空间的数据库搬家,从MYSLQ4.0升级到了4.1,而MySQL 4.1开始把多国语言字符集分的更加详细,并且强制要求设置字符集,空间默认的是UTF8编码,
所以造成了论坛页面使用GB2312显示和存储,可到了空间的MYSQL数据库中默认的存储的格式却是UTF-8的,这就造成使用论坛的备份功能时,文件时按照UTF-8保存下来,
临时解决方法:
1,用 faisunSQL自导入数据库备份程序 V4.0备份论坛数据库,下载到你的本地硬盘
2,用字符替换程序 115网盘下载
将备份文件中的
  1. DEFAULT CHARSET=gbk
复制代码
替换为
  1. DEFAULT CHARSET=gbk
复制代码
3,修改你下载的论坛备份文件中的index.php文件,
查找
  1. @mysql_connect($_POST[db_host],$_POST[db_username],$_POST[db_password]) or die("
  2. 不能连接服务器或连接超时!请返回检查您的配置。$showmywin0");
复制代码
在它下面添加
  1. mysql_query("SET NAMES gbk");
复制代码
4,在本地搭建的WEB平台上,使用你的备份文件恢复论坛数据库,即可正常升级。

下面待解决的问题:升级时显示、
您的配置文件 (./config.inc.php) 中的字符集 (gbk) 与表的字符集 (gbk) 不匹配。

分析:估计是MYSQL数据库版本问题,原数据库为MYSQL4.1,而discuz7.0至少需要MYSQL4.3版本的支持。
 楼主| 发表于 2011-3-8 13:31:02 | 显示全部楼层
不好意思,分析错误,好像是论坛版本搞错了-_-b
论坛的版本竟然是Discuz! 6.0RC1 而不是 6.0.0正式版
1,需要先复制运行d6rc1tofinal.php升级程序,

d6rc1tofinal.php升级时需要将下面的代码
  1. INSERT INTO cdb_bbcodes VALUES ({bbcodeid,1}, '0', 'sup', 'bb_sup.gif', '<sup>{1}</sup>', 'X[sup]2[/sup]', '上标', 1, '请输入上标文字:', '1');
  2. INSERT INTO cdb_bbcodes VALUES ({bbcodeid,2}, '0', 'sub', 'bb_sub.gif', '<sub>{1}</sub>', 'X[sub]2[/sub]', '下标', 1, '请输入下标文字:', '1');
复制代码
替换为
  1. INSERT INTO cdb_bbcodes VALUES ('1', '0', 'sup', 'bb_sup.gif', '<sup>{1}</sup>', 'X[sup]2[/sup]', '上标', 1, '请输入上标文字:', '1');
  2. INSERT INTO cdb_bbcodes VALUES ('2', '0', 'sub', 'bb_sub.gif', '<sub>{1}</sub>', 'X[sub]2[/sub]', '下标', 1, '请输入下标文字:', '1')
复制代码
否则报错

升级到discuz6.0完毕后,
备份升级后的数据,备份config.inc.php文件

2,然后再上传discuz7.0程序和d60to70.php文件,将刚才备份的config.inc.php文件覆盖上传。

运行d60to70.php,按照提示安装UC,完成后自动升级即可。
升级完毕后,备份升级后的数据,备份论坛目录下新的config.inc.php文件(因为它插入了UC的数据库连接和定义代码)

3,然后上传然后再上传discuz7.2程序和d60to72.php文件,将刚才新备份的config.inc.php文件覆盖上传。
运行d70to72.php,按照提示即可完成升级。
备份升级后的数据,备份config.inc.php文件

4,最后,修改你的论坛目录下的config.inc.php文件和uc_server目录下的config.inc.php文件,

$dbhost = '数据库服务器';
$dbuser = '数据库用户名';
$dbpw = '数据库密码';
$dbname = '数据库名';

UC的MYSQL数据库连接地址define('UC_DBHOST', '
MYSQL数据库用户名define('UC_DBUSER', '
MYSQL数据库连接密码define('UC_DBPW', '
MYSQL数据库名define('UC_DBNAME', '
UC中心文件API所在网址define('UC_API', '
UC中心文件IP所在地址define('UC_IP', '

依次修改为你的空间数据,上传覆盖即可。
回复

使用道具 举报

 楼主| 发表于 2011-3-8 14:29:14 | 显示全部楼层
discuz6.0升级7.0时提示错误
  1. Error: Unknown column 'isimage' in 'where clause'
复制代码
解决方法
登陆你的PHPMYADMIN
导入
  1. DROP TABLE IF EXISTS cdb_attachments;
  2. CREATE TABLE cdb_attachments (
  3.   aid mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
  4.   tid mediumint(8) unsigned NOT NULL DEFAULT '0',
  5.   pid int(10) unsigned NOT NULL DEFAULT '0',
  6.   width smallint(6) unsigned NOT NULL DEFAULT '0',
  7.   dateline int(10) unsigned NOT NULL DEFAULT '0',
  8.   readperm tinyint(3) unsigned NOT NULL DEFAULT '0',
  9.   price smallint(6) unsigned NOT NULL DEFAULT '0',
  10.   filename char(100) NOT NULL DEFAULT '',
  11.   description char(100) NOT NULL DEFAULT '',
  12.   filetype char(50) NOT NULL DEFAULT '',
  13.   filesize int(10) unsigned NOT NULL DEFAULT '0',
  14.   attachment char(100) NOT NULL DEFAULT '',
  15.   downloads mediumint(8) NOT NULL DEFAULT '0',
  16.   isimage tinyint(1) unsigned NOT NULL DEFAULT '0',
  17.   uid mediumint(8) unsigned NOT NULL DEFAULT '0',
  18.   thumb tinyint(1) unsigned NOT NULL DEFAULT '0',
  19.   remote tinyint(1) unsigned NOT NULL DEFAULT '0',
  20.   PRIMARY KEY (aid),
  21.   KEY tid (tid),
  22.   KEY pid (pid,aid),
  23.   KEY uid (uid),
  24.   KEY dateline (dateline, isimage, downloads)
  25. ) ENGINE=MyISAM DEFAULT CHARSET=gbk;
复制代码
回复

使用道具 举报

发表于 2011-3-8 21:09:37 | 显示全部楼层
看来今天上夜班?
回复

使用道具 举报

 楼主| 发表于 2011-3-9 21:46:07 | 显示全部楼层
额,昨天下夜班,今天上的白班,上夜班我18点30分就得走的.
回复

使用道具 举报

手机版|小黑屋|啊三国

GMT+8, 2024-5-4 07:24

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表