繁体   English   中英

使用“ DROP TABLE IF EXISTS”的DBI语法错误

[英]DBI syntax error using “DROP TABLE IF EXISTS”

我从数据库世界开始。 我正在尝试制作一个Perl脚本来从SQLite3中的数据库中获取一些数据。 我要做的第一步是删除现有表,然后使用新数据创建另一个表。 我的代码是:

#!/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命令行中,它可以正常工作。 有任何想法吗?

好吧,谢谢。

删除第二个;

     Bit_score INT););

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM