使用结果代码检查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存在。
答
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
非常感谢你 –
怎么样加入'--database “DBNAME”'的论点?目前未经测试,但如果数据库不存在,那么*应该*失败,否则查询将正常执行。 –
它的作品,非常感谢你,你可以把你的评论选择为答案? –
我在'--execute'之前添加了你的回复并且能够运行 –