jdbcを使用してWebプロジェクトのインストール中に.sqlファイルを実行しようとしています。 googleから提案された2つのオプション:手動でスクリプトを解析するか( ";"文字を分割する)、またはantを使用します。私は簡単な方法を好むので、アリは良い選択です。これは私がデータベースを設定するために使用するコードです:それは手順.sqlファイルからストアドプロシージャを作成できません - JDBC
DELIMITER //
CREATE PROCEDURE LOG (IN period INT)
BEGIN
INSERT INTO log_archive
SELECT * FROM ablog
WHERE log_date < DATE_SUB(CURRENT_DATE(), INTERVAL period DAY);
DELETE FROM ablog
WHERE log_date < DATE_SUB(CURRENT_DATE(), INTERVAL period DAY);
END//
DELIMITER ;
と、このエラーを与えるの作成の一部を満たすまで
public void executeSql(String sqlFilePath) {
final class SqlExecuter extends SQLExec {
public SqlExecuter() {
Project project = new Project();
project.init();
setProject(project);
setTaskType("sql");
setTaskName("SQL Init");
}
}
SqlExecuter executer = new SqlExecuter();
executer.setSrc(new File(sqlFilePath));
executer.setDriver("com.mysql.jdbc.Driver") ;
executer.setPassword("123456");
executer.setUserid("root");
executer.setUrl("jdbc:mysql://localhost:3306/abc");
executer.execute();
}
コードは正常に動作:
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER // CREATE PROCEDURE LOG(IN period INT) BEGIN INSERT INTO log_archi' at line 1
私はストアドプロシージャの部分を削除すると、それはうまく動作します。 sqlファイルもmysqlコマンドプロンプトから正常に実行されます。この問題を解決するための提案はありますか?
これは、分離されたファイルからストアドプロシージャを実行する唯一の方法だと思います。ありがとうございますlink –
@bubuzz:いいえ、いずれかのSQLエンジンに応じてSQL形式をロードし、JDBCを呼び出すことができます。 Liquibaseそれはより良い:) – Jayan