mysql脚本文件(.sql)运行问题

时间:2011-03-29 07:31:04

标签: mysql

我的系统要求是从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

我的问题是如果任何查询失败,脚本会停止执行  任何人都可以告诉我如何防止它[这里只有第二个有错误的语法,第一个和第三个应该运行] 我想执行整个脚本,如果有任何失败避免它并从下一个查询重新开始并生成一个文件,它显示错误列表........

3 个答案:

答案 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);  

请参阅:CREATE TABLE Syntax