我正在使用mysql命令行工具使用以下命令连接到远程计算机上的mysql服务器:
mysql -u username -ppassword -h host_ip -P port_no --verbose < sql file on windows
我在Windows上有一个.sql文件,我在远程服务器上执行。我使用了verbose来显示文件中存在的sql命令和正在执行的命令。
现在问题是当我执行上面的命令时,如果执行成功,它只返回提示返回,当出现错误时显示错误。我想要的是,当一个命令成功时,它应该显示服务器给出的响应,就像你在mysql中执行以下命令一样:
create table xyz;
执行上述命令后, mysql返回&#34;表xyz成功创建&#34; 。我希望在我的命令行提示符下显示这样的内容。
我也使用了-E选项,但它不起作用。
要执行上述mysql命令,我已经下载了&#34; Windows(x86,xx-bit),ZIP Archive&#34;然后将命令提示符中的当前目录更改为上面下载文件中的bin文件夹。
答案 0 :(得分:0)
执行每个select语句都会返回成功或失败。在DDL / DML语句的情况下,它返回受影响的行数。您应该在执行每个语句后捕获这些值以详细显示结果。
关于CREATE TABLE语句结果捕获的示例 :
在SQL脚本文件中,在每个可执行语句旁边添加类似于以下内容的语句。
select concat('table x ', if(row_count()=0, '', 'not '), 'created' ) 'result';
工作示例 :
我们假设您已在mysql_stmt.sql
上的脚本文件Desktop
中编写了以下语句。
select row_count();
create table y( x in6 );
select concat('table y ', if(row_count()=0, '', 'not '), 'created' ) 'result';
create table y( x int );
select concat('table y ', if(row_count()=0, '', 'not '), 'created' ) 'result';
-- C:\Users\Ravinder\Desktop\mysql_stmt.sql
在MySQL命令提示符下,发出以下命令:
\. C:\Users\Ravinder\Desktop\mysql_stmt.sql
您将在屏幕上看到详细的结果。
来自Shell提示的示例 :
在Shell提示符下也会出现相同的行为。但是,如果您在语法上有任何错误的查询或违反语句等,则执行会中止。在这种情况下,您可能需要在识别和修复问题时进行更多练习。您也可以选择抑制此类失败并指示继续进行下一个声明,但我不确定并且未尝试过。
MyShell>mysql -u root -p --verbose test < "C:\Users\Ravinder\Desktop\mysql_stmt.sql"
Enter password: *****
--------------
select row_count()
--------------
row_count()
-1
--------------
create table y( x int )
--------------
--------------
select concat('table y ', if(row_count()=0, '', 'not '), 'created' ) 'result'
--------------
result
table y created
MyShell>