2

次の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コードからデータベースにアクセスするためにパスワードを使用する必要がある場合に、セキュリティを向上させることでこの警告に対処する方法を教えてもらえますか?具体的には、セキュリティリスクなしで同じタスクが実行されるようにコードを変更するにはどうすればよいですか?

4

2 に答える 2

2

目標を達成するための最良の方法は、.../mysql/binフォルダーをに追加することPATHです。

それがオプションでない場合は、プロパティを介して mysql の場所を指定して-Dmysql.bin.dir=/path/to/mysqlから使用できます。<exec executable="${mysql.bin.dir}/mysql" input="cleandb.sql">

于 2013-02-06T23:06:13.833 に答える
1

実行可能ファイルへのパスを使用してプロパティを作成します。

<property name="mysql.exec.path" value="C:/path/to/it" />

上書きする可能性のあるローカル プロパティ ファイルを最初にロードすることで、移植可能にすることができます。次に例を示します。

<property file="${user.home}/local.properties" />  // can override mysql.exec.path property, if necessary
<property name="mysql.exec.path" value="C:/path/to/it" />  // if not, use the default

次に、次のように参照します。

<exec executable="${mysql.exec.path}/mysql" input="cleandb.sql">
  <arg line="${mysql.params}" />
</exec>
于 2013-02-06T23:24:43.440 に答える