使用结果代码检查cmd中的MySQL数据库?

问题描述:

我试图从cmd查询返回0如果数据库存在或任何其他数字(例如1),如果它不。使用结果代码检查cmd中的MySQL数据库?

我做这样的查询:

"C:\mysql.exe" --host=localhost --user=root --password=pass --execute="SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'DB_Name'" 

如果存在,它返回一个表(和退出代码0);如果没有,它没有返回值(和退出代码0太)

我用这对Inno Setup的安装程序,如:

Exec(
    ExpandConstant('{tmp}\mysql.exe'), 
    '--host='+eServer.text+' --user='+eUser.text+' --password='+ePass.text+ 
    ' --port='+ePort.text+ 
    ' --execute="SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '+ 
    ''''+eDBname.text+''''+'"', '', SW_HIDE, ewWaitUntilTerminated, ResultCode); 

if (ResultCode <> 0) then   
    MsgBox('Error when connecting to server', mbError, MB_OK); 

所以它返回我即使数据库没有0存在。

+2

怎么样加入'--database “DBNAME”'的论点?目前未经测试,但如果数据库不存在,那么*应该*失败,否则查询将正常执行。 –

+0

它的作品,非常感谢你,你可以把你的评论选择为答案? –

+0

我在'--execute'之前添加了你的回复并且能够运行 –

mysql CLI支持--database参数以在运行任何--execute查询之前设置默认数据库。将此值设置为不存在的数据库(或者用户没有访问权限的数据库)会导致CLI退出非零值,因为指定的数据库不能设置为默认值。

添加的选项,这些格式之一:

--database "dbname" 
--database="dbname" 
-D "dbname" 

https://dev.mysql.com/doc/refman/5.7/en/mysql-command-options.html#option_mysql_database

+0

非常感谢你 –