我使用SQLite v3编写Perl脚本.sqlite版本是3.3.6.
当我在命令行上运行sqlite时,它可以工作.但是当我在Perl中做同样的事情时,它会引发这个错误
DBD :: SQLite :: db失败:接近"NOT":文件行2675处dbdimp.c第268行的语法错误(1).
这就是我在控制台上所做的事情:
$ sqlite3 test.db
SQLite version 3.3.6
sqlite> create table if not exists DATA_STATUS_VALUE (TYPE TEXT PRIMARY KEY, Seq INTEGER);
sqlite> .tables AllJobs LOCKSTAT_VALUE test_run12_data
DATA_STATUS_VALUE STATUS_VALUE test_run12_lock
Run Code Online (Sandbox Code Playgroud)
我正在使用的SQLite版本支持IF NOT EXISTS,为什么我会收到错误?
这是我的Perl代码:
#!/usr/bin/perl
use DBI;
my $driver = "SQLite";
$database = "test.db";
$dsn = "DBI:$driver:dbname=$database";
$dbh = DBI->connect( $dsn, undef, undef, { RaiseError => 1 } );
$dbh->do("CREATE TABLE IF NOT EXISTS DATA_STATUS_VALUE (TYPE TEXT PRIMARY KEY, Seq INTEGER);");
Run Code Online (Sandbox Code Playgroud)
我正在使用的SQLite版本支持IF NOT EXISTS,为什么我收到错误?
因为DBD :: SQLite没有使用您已安装的SQLite版本.DBD :: SQLite捆绑了自己的SQLite版本 ; 它将使用捆绑版本,除非您在编译时告诉它使用其他版本.
您可以通过运行找到DBD :: SQLite正在使用的SQLite版本:
perl -MDBD::SQLite -le'print $DBD::SQLite::sqlite_version'
Run Code Online (Sandbox Code Playgroud)
支持CREATE TABLE ... IF NOT EXISTS中加在3.3.0对于SQLite.您应该升级DBD :: SQLite,因为最新版本(1.50)与SQLite 3.10.2捆绑在一起.
| 归档时间: |
|
| 查看次数: |
502 次 |
| 最近记录: |