次のbuild.xmlファイルを実行してEclipseのJavaアプリケーションからmysqlを操作しようとすると、次のエラーメッセージが表示されます。
BUILD FAILED
d:\ mypath \ worksheet \ appname \ database \ build.xml:14:実行に失敗しました:java.io.IOException:プログラム "mysql"を実行できません:CreateProcessエラー= 2、システムは指定されたファイルを見つけることができません
build.xmlのコードは次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<project name="publisher" default="all" basedir=".">
<property name="mysql.params" value="-u publisher -ppublisher -D publisher" />
<target name="all" depends="cleandb, createdb, insertdb"></target>
<target name="cleandb">
<exec executable="mysql" input="cleandb.sql">
<arg line="${mysql.params}" />
</exec>
</target>
<target name="createdb">
<exec executable="mysql" input="createdb.sql">
<arg line="${mysql.params}" />
</exec>
</target>
<target name="insertdb">
<exec executable="mysql" input="insertdb.sql">
<arg line="${mysql.params}" />
</exec>
</target>
</project>
Eclipseから、ファイルを「Ant Build ...」として実行し、最初にcreatedb.sqlを呼び出しています。したがって、スローしている行は、実行を求められている最初の行です。つまり、次のようになります。
問題は、スクリプトがmysqlを見つけられないことのようです。Windowsのコマンドラインから、次のパスを使用してデータベースのインスタンスを呼び出すことができます:
d:\ mypath \ MySQL \ MySQL Server \ bin \ mysqld
xmlファイルでmysqlインストールのパスを指定する必要があると思いますが、上記のコードで必要なパラメーターを渡しながら、その方法がわかりません。Antとmysqlを使用するのはこれが初めてなので、構文は私にとって新しいものです。
誰かが私のデータベースを見つけることができるように上記のコードを修正する方法を教えてもらえますか?
編集:
私はwhiskeyspiderの提案に従い、コードを次のように編集しました。
-- I had a bunch of code here that I am now omitting for brevity because
-- there is a newer, revised version of the code in the second edit below.
一部の読者は、私がこのチュートリアルのコードを使用しようとしていることを知るのに役立つ場合があります。違いは、mysqlのバージョン5.6とバージョン:Juno Serviceリリース1ビルドID:20120920-0800のEclipseを使用していることです。チュートリアルでは、両方のアプリケーションの古いバージョンを使用しているため、混乱が生じています。
2番目の編集:
build.xmlファイルを再度変更して、whiskeyspiderの2回目の修正を実装しました。スクリプトがmysqlデータベースにアクセスするようになりましたが、以下に質問がある別のメッセージがあります。
これが新しいbuild.xmlコードで、正しく実行されます。
<?xml version="1.0" encoding="UTF-8"?>
<project name="publisher" default="all" basedir=".">
<property name="mysql.params" value="-u publisher -ppublisher -D publisher" />
<property name="mysql.exec.path" value="d:\\mypath\\MySQL\\bin\\"/>
<target name="all" depends="cleandb, createdb, insertdb"></target>
<target name="cleandb">
<exec executable="${mysql.exec.path}/mysqld" input="cleandb.sql">
<arg line="${mysql.params}" />
</exec>
</target>
<target name="createdb">
<exec executable="${mysql.exec.path}/mysqld" input="createdb.sql">
<arg line="${mysql.params}" />
</exec>
</target>
<target name="insertdb">
<exec executable="${mysql.exec.path}/mysqld" input="insertdb.sql">
<arg line="${mysql.params}" />
</exec>
</target>
</project>
build.xmlの実行時にeclipseコンソールで報告されるログは次のとおりです。
Buildfile: d:\mypath\workspace\publisher\database\build.xml
createdb:
[exec] Warning: Using a password on the command line interface can be insecure.
insertdb:
[exec] Warning: Using a password on the command line interface can be insecure.
BUILD SUCCESSFUL
Total time: 1 second
Eclipseを使用して実行されたantコードからデータベースにアクセスするためにパスワードを使用する必要がある場合に、セキュリティを向上させることでこの警告に対処する方法を教えてもらえますか?具体的には、セキュリティリスクなしで同じタスクが実行されるようにコードを変更するにはどうすればよいですか?