在第一个错误时使SQLite中止(并唱歌)

在第一个错误时使SQLite中止(并唱歌),sqlite,Sqlite,我想命名这篇文章,让SQLite在第一个错误时中止,但StackOverflow的AI霸主认为它不符合他们关于人类智能行为的概念。记录在案的是,我在谷歌上搜索的正是这一点,但也许连谷歌人工智能都认为我的问题不值得,也懒得帮我。Mods,可以根据你的AI老板的愿望随意更改标题(如果你能找到答案的话) 我有这个剧本 create if not exists table entries ( id integer primary key, start datetime not null

我想命名这篇文章,让SQLite在第一个错误时中止,但StackOverflow的AI霸主认为它不符合他们关于人类智能行为的概念。记录在案的是,我在谷歌上搜索的正是这一点,但也许连谷歌人工智能都认为我的问题不值得,也懒得帮我。Mods,可以根据你的AI老板的愿望随意更改标题(如果你能找到答案的话)


我有这个剧本

create if not exists table entries (
    id integer primary key,
    start datetime not null,
    end datetime not null
);

delete from entries;
insert into entries values (1, '2018-08-01 10:00', '2018-08-01 15:00');
insert into entries values (2, '2018-08-01 17:00', '2018-08-01 20:00');
insert into entries values (1, '2018-08-02 19:00', '2018-08-02 00:00');
insert into entries values (1, '2018-08-03 00:00', '2018-08-03 04:00');
insert into entries values (1, '2018-08-03 14:00', '2018-08-03 18:00');
create
语句中有错误。当我运行脚本时,我得到

% sqlite3 db.sqlite3 <ddl.sql
Error: near line 1: near "if": syntax error
Error: near line 7: no such table: entries
Error: near line 8: no such table: entries
Error: near line 9: no such table: entries
Error: near line 10: no such table: entries
Error: near line 11: no such table: entries
Error: near line 12: no such table: entries
%sqlite3 db.sqlite3从中,似乎可以打开点命令
.bail

.遇到错误后,应立即停止。违约

-O'Reilly使用Sqlite

编辑


要退出,可以使用
.exit
点命令。

这不会使shell在出错时退出。(这也是我的第一个建议,直到我对它进行了测试)。然后这应该是问题所在,而不是退出执行脚本。我没有办法进行测试,但是使用
.exit
应该可以“如何使SQLite在遇到第一个错误时退出执行脚本?”这一点非常清楚。(.bail on/-bail实际上可能会做OP想要的事情。在更多的测试中,当重定向文件中的输入时,它确实会使sqlite3以状态1退出,但有一个错误;我刚刚尝试直接在其中键入内容)当我读到这篇文章时,他似乎希望脚本停止运行,而不是退出shell。@CodeMonkey这是正确的。现在我的心思在别处,但我记得我还希望
sqlite3
在发生错误时以非零退出代码退出。我说的不是交互式sqlite3 shell,而是脚本的使用。