我的系统要求是从ubuntu终端执行mysql命令序列,
为了测试,我在桌面上创建了一个文件query.sql
,其内容如下:
create table aa (id int);
create tab bb (id int);
create table cc (id int);
我用以下命令执行此操作:
zero@zero-desktop:~/Desktop$ mysql --user=root --password=admin --database=zero <query.sql
我的问题是如果任何查询失败,脚本会停止执行 任何人都可以告诉我如何防止它[这里只有第二个有错误的语法,第一个和第三个应该运行] 我想执行整个脚本,如果有任何失败避免它并从下一个查询重新开始并生成一个文件,它显示错误列表........
答案 0 :(得分:1)
如果要执行整个脚本文件,无论查询语法是否正确或不使用此命令
zero@zero-desktop:~/Desktop$ mysql --force --user=root --password=admin --database=zero <query.sql
如果有问题,它将跳过查询并移动执行下一个查询...
如果有任何语法错误的查询,你最终会得到错误列表......
错误将显示在终端上,如: -
第2行的错误1064(42000):您的SQL语法有错误;
检查与MySQL服务器版本对应的手册,以便在第1行的'tab bb(id int)'附近使用正确的语法
错误1050(42S01)在第3行:表'cc'已存在
-----------有什么方法可以将这个错误保留在比终端更多的文件上?----------
答案 1 :(得分:0)
我从未使用它,但--force键应该忽略所有错误
同样,还没有对此进行测试,但是将mysql行添加为“2&gt; error.log”应该将mysql的所有错误输出重定向到文件error.log
答案 2 :(得分:0)
如果您的文件中只有CREATE TABLE
个语句,则可以添加IF NOT EXISTS
以避免表已存在时出现问题。这样,您可以在收到错误后重新运行脚本。
create table if not exists aa (id int);
create tab if not exists bb (id int);
create table if not exists cc (id int);