我尝试使用Drupal模块执行包含在.sql文件中的sqlite3脚本,以便将数据库从Drupal站点迁移到Wordpress站点。
所以我用这个小脚本打开并阅读了.sql的东西:
def executeSQLScriptsFromFile(filename):
fd = open(filename, 'r')
sqlFile = fd.read()
fd.close()
sqlCommands = sqlFile.split(';')
for command in sqlCommands:
print " === BEGIN \n" + command + "\nEND === \n"
try:
c.execute(command)
except OperationalError, msg:
print "Command skipped: ", msg 当我使用我编写的SQL命令执行这段代码时,一切都很正常: CREATE TABLE、SELECT、DELETE……
但当我尝试使用从网站数据库下载的SQL脚本时,我使用的是:
CREATE TABLE IF NOT EXISTS `node` (
`nid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`vid` int(10) unsigned NOT NULL DEFAULT '0',
`type` varchar(32) NOT NULL DEFAULT '',
`language` varchar(12) NOT NULL DEFAULT '',
`title` varchar(255) NOT NULL DEFAULT '',
`uid` int(11) NOT NULL DEFAULT '0',
`status` int(11) NOT NULL DEFAULT '1',
`created` int(11) NOT NULL DEFAULT '0',
`changed` int(11) NOT NULL DEFAULT '0',
`comment` int(11) NOT NULL DEFAULT '0',
`promote` int(11) NOT NULL DEFAULT '0',
`moderate` int(11) NOT NULL DEFAULT '0',
`sticky` int(11) NOT NULL DEFAULT '0',
`tnid` int(10) unsigned NOT NULL DEFAULT '0',
`translate` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`nid`),
UNIQUE KEY `vid` (`vid`),
KEY `node_changed` (`changed`),
KEY `node_created` (`created`),
KEY `node_moderate` (`moderate`),
KEY `node_promote_status` (`promote`,`status`),
KEY `node_status_type` (`status`,`type`,`nid`),
KEY `node_title_type` (`title`,`type`(4)),
KEY `node_type` (`type`(4)),
KEY `uid` (`uid`),
KEY `tnid` (`tnid`),
KEY `translate` (`translate`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=663 ;我得到了一个例外:
Command skipped: near "unsigned": syntax error如你所见,我的SQL不太流利:p
有人知道问题出在哪里吗?
发布于 2015-07-17 23:47:09
sqlite3不支持unsigned,也不支持AUTO_INCREMENT。可能还有其他一些sqlite3不支持的指令...我认为你是从某个针对postgres或mysql的人那里得到这个文件的。要修复它,请删除sqlite3不支持的所有指令,或者使用与file目标相同的数据库引擎
顺便说一句,你可以这样做
c.executescript(open("my_sqcript.sql").read())以下是适用于sqlite3的模式
CREATE TABLE IF NOT EXISTS `node` (
`nid` int(10) NOT NULL,
`vid` int(10) NOT NULL DEFAULT '0',
`type` varchar(32) NOT NULL DEFAULT '',
`language` varchar(12) NOT NULL DEFAULT '',
`title` varchar(255) NOT NULL DEFAULT '',
`uid` int(11) NOT NULL DEFAULT '0',
`status` int(11) NOT NULL DEFAULT '1',
`created` int(11) NOT NULL DEFAULT '0',
`changed` int(11) NOT NULL DEFAULT '0',
`comment` int(11) NOT NULL DEFAULT '0',
`promote` int(11) NOT NULL DEFAULT '0',
`moderate` int(11) NOT NULL DEFAULT '0',
`sticky` int(11) NOT NULL DEFAULT '0',
`tnid` int(10) NOT NULL DEFAULT '0',
`translate` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`nid`),
UNIQUE(`vid`)
) ;下面是sqlalchemy定义的表
class Node(Base):
__tablename__ = 'node'
nid = Column(Integer,primary_key=True)
vid = Column(Integer,default=0)
type = Column(String,default="")
language= Column(String,default="")
title = Column(String,default="")
uid = Column(Integer,default=0)
status = Column(Integer,default=1)
created = Column(Integer,default=0)
changed = Column(Integer,default=0)
comment = Column(Integer,default=0)
promote = Column(Integer,default=0)
moderate= Column(Integer,default=0)
sticky = Column(Integer,default=0)
tnid = Column(Integer,default=0)
translate= Column(Integer,default=0)https://stackoverflow.com/questions/31479592
复制相似问题