很多人用了"童虎"哥哥的《不同MYSQL版本数据导入问题解决办法》,原文地址请参考以下地址:
https://discuz.dismall.com/viewthread.php?tid=142050
童虎童虎--马马虎虎。大家都这样说了。其实童虎哥哥没有错。错的是不仔细哦。我再来讲一次好了。
前面写童虎写的一样,我也不费劲自己编了:
最近不少用户反映换了空间之后导入数据时候出现错误,错误信息如下:(这里要说明一下,一般是指高版本到低版本的。常见的是:4.1降至4.0左右。听说4.1降到3.多没事。不知是不是真的。我对4.0也不是很了解。最近几个月才常常碰PHP和mysql的)
- Discuz! info: MySQL Query Error
- User: xxx
- Time: 2005-7-14 12:31pm
- Script: /admincp.php
- SQL: CREATE TABLE cdb_access ( uid mediumint(8) unsigned NOT NULL default '0', fid smallint(6) unsigned NOT NULL default '0', allowview tinyint(1) NOT NULL default '0', allowpost tinyint(1) NOT NULL default '0', allowreply tinyint(1) NOT NULL default '0', allowgetattach tinyint(1) NOT NULL default '0', PRIMARY KEY (uid,fid)) ENGINE=InnoDB DEFAULT CHARSET=latin1
- Error: 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 'DEFAULT CHARSET=latin1' at line 1
- Errno.: 1064
复制代码
可能信息不完全相同,但是基本类似
解决办法如下:
用纯文本处理软件(例如记事本之类)打开你备份的文件,这些文件一般是*.sql(分卷备份的要注意每个卷都看。)
在这些文件里面找到
- ENGINE=MYISAM DEFAULT CHARSET=latin1
复制代码
有的是:ENGINE=InnoDB DEFAULT CHARSET=latin1
不管是那种,要看你的数据库来,一般都可以改为虎哥哥说的
————————————————————————————————
然后再找到 如果你是分卷,一般在最后一个分卷。
- ENGINE=HEAP DEFAULT CHARSET=latin1
复制代码
改为:
和虎哥哥说的一样嘛。不要急。如果你这样做,后台导入时会出显如下错误(一般是最后一步):
User: xx
Time: 2006-2-12 7:37am
Script: /bbs2/admincp.php
SQL: CREATE TABLE cdb_sessions ( sid char(6) character set latin1 collate latin1_bin NOT NULL default '', ip1 tinyint(3) unsigned NOT NULL default '0', ip2 tinyint(3) unsigned NOT NULL default '0', ip3 tinyint(3) unsigned NOT NULL default '0', ip4 tinyint(3) unsigned NOT NULL default '0', uid mediumint(8) unsigned NOT NULL default '0', username char(15) NOT NULL default '', groupid smallint(6) unsigned NOT NULL default '0', styleid smallint(6) unsigned NOT NULL default '0', invisible tinyint(1) NOT NULL default '0', `action` tinyint(1) unsigned NOT NULL default '0', lastactivity int(10) unsigned NOT NULL default '0', fid smallint(6) unsigned NOT NULL default '0', tid mediumint(8) unsigned NOT NULL default '0', UNIQUE KEY sid (sid)) ENGINE=HEAP DEFAULT CHARSET=latin1 MAX_ROWS=5000
Error: 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 'collate latin1_bin NOT NULL default '', ip1 tinyint(3) unsigne
Errno.: 1064
Similar error report has beed dispatched to administrator before.
去首页一看。出现:
Discuz! info: MySQL Query Error
Time: 2006-2-12 7:37am
Script: /bbs2/index.php
SQL: SELECT s.sid, s.styleid, s.groupid='6' AS ipbanned, m.uid AS discuz_uid, m.username AS discuz_user, m.password AS discuz_pw, m.adminid, m.groupid, m.email, m.timeoffset,m.tpp, m.ppp, m.credit, m.timeformat, m.dateformat, m.signature, m.invisible, m.lastvisit, m.lastactivity as user_lastactivity, m.lastpost, m.newpm, m.accessmasks, m.regdate FROM cdb_sessions s, cdb_members m WHERE m.uid=s.uid AND s.sid='temNlR' AND CONCAT_WS('.',s.ip1,s.ip2,s.ip3,s.ip4)='127.0.0.1' AND m.uid='5' AND m.password='7804c484c55324a34c1ebcf1926b9696' AND m.secques='0ebb9d64'
Error: Table 'bbs2.cdb_sessions' doesn't exist
数据表缺失,请恢复备份数据
不要急。这就是为什么说虎哥哥马虎的原因:
————————————————————————————————
找到以下代码并删除:(如果你是分卷,一般在最后一个分卷。)
- character set latin1 collate latin1_bin
复制代码
保存上传。
什么嘛!!用restore.php恢复的还是出显上面的1146错误。
呵呵~在这里我不得不说一下。如果是这样,请你重装一下DZ,然后用DZ的后台来恢复。至于为什么要这样。我就不说了。问茄子吧。
PS:你别看我上面写得多。就三部。简单得不得了。。。说明多,为那些不懂的人说明。其实你只要比较一下两个版本导出的数据之间的差别就应该明白哪里有问题了。就是凡出现设置charact的地方,那一句都要修改
最后,看我的签名,请为我解答一下。谢谢!
[ 本帖最后由 weic 于 2006-2-12 09:02 编辑 ] |