gpt4 book ai didi

java - 无法从 .sql 文件创建存储过程 - JDBC

转载 作者:可可西里 更新时间:2023-11-01 08:21:08 25 4
gpt4 key购买 nike

我正在尝试使用 jdbc 在我的 Web 项目安装期间执行 .sql 文件。谷歌建议的 2 个选项:手动解析脚本(通过拆分“;”字符)或使用 ant。我更喜欢简单的方式,所以 ant 是一个不错的选择。这是我用来设置数据库的代码:

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();
}

代码工作正常,直到它遇到创建过程的部分

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 ;

并给出这个错误:

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 命令提示符成功执行。你对解决这个问题有什么建议吗?

最佳答案

考虑使用类似 liquibase 的工具.它支持mysql,但有一些小问题。

关于java - 无法从 .sql 文件创建存储过程 - JDBC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9363580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com