【发布时间】:2019-07-07 13:58:22
【问题描述】:
我尝试使用 Perl 在 SQLite 数据库的表中插入一行。
该表有一列 ID 并设置了 AUTOINCREMENT 和 PRIMARY KEY 属性。
来自MY_TABLE 架构,这是关于ID 字段的所有信息:
ID [INT AUTO_INCREMENT] NOT NULL,
PRIMARY KEY (ID)
我不想为添加的每个新行配置ID,因此我尝试了几种方法让数据库自行更新,但我得到:
DBD::SQLite::st 执行失败:MY_TABLE.ID 可能不为 NULL
use DBI;
my $db = DBI->connect("...");
my $sql = qq{
insert into MY_TABLE (ID, col_b, col_c, col_d)
values(?, ?, ?, ?)
}
my $st = $db->prepare($sql);
$st->execute(undef, 'val2', 'val3', 'val4');
我还尝试从查询和参数中完全跳过参数,但结果相同。使用0 而不是undef 会插入实际值(我不想这样做,我想自动递增)。
我错过了什么?
【问题讨论】:
-
可以分享一下表格结构吗?您可以从 sqlite 命令行执行
.schema MY_TABLE;并使用输出更新您的问题。 -
@GMB 我添加了
ID字段的信息,很遗憾,无法分享更多信息。 -
如果没有完整的表定义,就很难准确判断出了什么问题。为什么不能分享更多?您可以将不想分享的信息设为匿名。
-
另外,
AUTO_INCREMENT在 sqlite 中应该是AUTOINCREMENT。