理论上讲,完全没必要写这篇文章,因为恢复看起来是那么的简单明了.mysqldump 或者在mysql的shell下执行导出的sql脚本就自然而然的万事ok了.但是限于能力有限,不得不写.
(补充,当这个问题解决的时候,我觉得自己要彻底地读一遍mysql的文档了) 上一篇是把数据导出来了,但是面对数据恢复,我却遇到了一点意想不到的问题.首先面对的是数据库中表列名的问题.一个表中有一列的名字叫做from,当时是怎么创建上去的?现在恢复总是提示错误?
- -- Table structure for table `wiki_pms`
--
DROP TABLE IF EXISTS wiki_pms;
CREATE TABLE wiki_pms (
id int(10) unsigned NOT NULL auto_increment,
from varchar(15) NOT NULL default '',
fromid mediumint(8) unsigned NOT NULL default '0',
toid mediumint(8) unsigned NOT NULL default '0',
drafts tinyint(1) NOT NULL default '0',
new tinyint(1) NOT NULL default '0',
subject varchar(75) NOT NULL default '',
message text NOT NULL,
time int(10) unsigned NOT NULL default '0',
delstatus tinyint(1) NOT NULL default '0',
PRIMARY KEY (id),
KEY toid (toid,drafts,time),
KEY fromid (fromid,drafts,time)
) TYPE=MyISAM;
- ERROR 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 'from varchar(15) NOT NULL default '
- fromid mediumint(8) uns
这个是因为列名使用了mysql的关键字的
原因,解决方案就是将列名用反引号保护起来.`from`就可以了,比较憋屈,为什么导出的时候没问题呢?
- -- Table structure for table `wiki_usergroup`
--
DROP TABLE IF EXISTS wiki_usergroup;
CREATE TABLE wiki_usergroup (
groupid smallint(6) unsigned NOT NULL auto_increment,
grouptitle varchar(30) NOT NULL default '',
regulars text NOT NULL,
default text,
type tinyint(1) NOT NULL default '0',
creditslower int(10) NOT NULL default '0',
creditshigher int(10) NOT NULL default '0',
stars tinyint(3) NOT NULL default '0',
color varchar(7) NOT NULL default '',
groupavatar varchar(60) NOT NULL default '',
PRIMARY KEY (groupid),
KEY creditsrange (creditslower,creditshigher)
) TYPE=MyISAM;
--
- ERROR 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 'default text,
- type tinyint(1) NOT NULL default '0',
同样的问题,一个叫做default的列,搞定.
阅读(2055) | 评论(0) | 转发(1) |