0
我开始了数据库的世界。我试图让一个Perl脚本从SQLite3中的数据库中获取一些数据。我想要做的第一步是删除现有的表格,然后用新的数据创建另一个表格。我的代码是:使用“DROP TABLE IF EXISTS”的DBI语法错误
#!/usr/bin/perl
use DBI;
use strict;
my $driver = "SQLite";
my $database = "/media/My\ Passport/Sources/M5nr_db";
my $dsn = "DBI:$driver:dbname=$database";
my $userid = "";
my $password = "";
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })
or die $DBI::errstr;
print "Opened database successfully\n";
my $stmt = qq(DROP TABLE IF EXISTS matching_prot);
my $rv = $dbh->do($stmt);
my $stmt = qq(CREATE TABLE matching_prot
(Seq_ID TEXT,
M5 TEXT,
Identity REAL
Evalue REAL
Bit_score INT););
my $rv = $dbh->do($stmt);
$dbh->disconnect();
,但我得到了以下错误:
Opened database successfully
DBD::SQLite::db do failed: near "EXISTS": syntax error(1) at dbdimp.c line 269 at use_database.pl line 16.
DBD::SQLite::db do failed: near "EXISTS": syntax error(1) at dbdimp.c line 269 at use_database.pl line 16.
在sqlite3的命令行,它工作正常。有任何想法吗?
嗯,在此先感谢。
什么是'$ dbh - > {sqlite_version}'? ...虽然我不认为这将基于错误消息。 – ikegami
返回3.2.7 – user2245731
'... IF EXISTS'支持SQLite 3.3.0:请参阅http://stackoverflow.com/q/3675032/168657 – mob