如何在SQLite3命令行中检测.import命令执行时的错误?
SQLite .import命令的.bail机制仅在最后一条记录失败时生效
启用.bail on后,SQLite的.import命令并不会在遇到任意错误时立即终止脚本执行——只有当最后一条待导入的记录失败时,才会触发终止。以下测试案例可复现该行为:
测试脚本
.bail on PRAGMA foreign_keys = ON; create table x (a primary key); create table y (c references x(a)); .import --csv "|echo 2" x .import --csv "|seq 2" y .print '尽管插入1失败,但并未终止执行' create table z (a, b NOT NULL); .import --csv "|printf 'a\nb,c\n'" z .print "尽管插入`a`失败,但并未终止执行" .import --csv "|printf '1,2\n3\n'" z .print '这段内容不会打印,因为这次错误记录出现在最后一行'
执行结果输出
<pipe>:1: INSERT failed: 外键约束失败 尽管插入1失败,但并未终止执行 <pipe>:1: 预期2列但仅找到1列 - 剩余列填充为NULL <pipe>:1: INSERT failed: NOT NULL约束失败: z.b 尽管插入`a`失败,但并未终止执行 <pipe>:2: 预期2列但仅找到1列 - 剩余列填充为NULL <pipe>:2: INSERT failed: NOT NULL约束失败: z.b
内容的提问来源于stack exchange,提问作者Alpaca
相关产品推荐
相关产品推荐

