2017-08-03 11 views
1

私は、データベースが存在する場合は0を返し、そうでない場合は他の数値(たとえば1)を返すcmdからクエリを作成しようとしています。結果コードで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

何:

は、これらのいずれかの形式でオプションを追加しますか?未定義ですが、dbが存在しない場合は失敗するはずです。そうしないと、クエリは正常に実行されます。 –

+0

それは動作する、ありがとう、答えとして選択するコメントを置くことができますか? –

+0

'--execute'の前にあなたの応答を追加しました。 –

答えて

2

mysql CLIは、--executeクエリを実行する前にデフォルトデータベースを設定するために、引数--databaseをサポートしています。この値を存在しないデータベース(またはユーザーが必要なアクセス権を持たないデータベース)に設定すると、指定されたデータベースをデフォルトとして設定できないため、CLIはゼロ以外で終了します。引数に `` --database "DBNAME" を追加する方法について

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

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

+0

ありがとう –

関連する問題