我使用schema.sql文件在我的Spring启动应用程序中创建/删除表,它工作正常.但是当我添加更改表的过程时:DELIMITER $$CREATE PROCEDURE Alter_Table()BEGINIF NOT EXISTS( SELECT NULLFROM INFORMATION_SCHEMA.COL...

我使用schema.sql文件在我的Spring启动应用程序中创建/删除表,它工作正常.
但是当我添加更改表的过程时:
DELIMITER $$
CREATE PROCEDURE Alter_Table()
BEGIN
IF NOT EXISTS( SELECT NULL
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'test_table'
AND table_schema = 'test'
AND column_name = 'cc_test_id') THEN
alter table test_table add cc_test_id VARCHAR(128) NOT NULL;
END IF;
END $$
call Alter_Table;
我收到了com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException异常.
但是,在MySQL工作台中执行此过程会成功完成.
那么,如果有人知道这个问题的原因是什么,请告诉我.
谢谢.
解决方法:
这是我发现的解决方案,它运行得很好,但它不是理想的,因为你必须更改你的SQL脚本.
在application.properties文件中更改DataSource分隔符属性:
spring.datasource.separator=^;
然后更新schema.sql文件,如下所示:
CREATE PROCEDURE Alter_Table()
BEGIN
IF NOT EXISTS( SELECT NULL
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'test_table'
AND table_schema = 'test'
AND column_name = 'cc_test_id') THEN
alter table test_table add cc_test_id VARCHAR(128) NOT NULL;
END IF;
END ^;
call Alter_Table ^;
DELIMITER命令仅适用于MySQL CLI客户端和Workbench,不适用于Spring Boot数据库初始化.一旦删除了DELIMITER命令,Spring Boot仍然会抛出异常,因为它不会理解;存储过程中的字符不是单独的语句,因此您必须更改数据源分隔符属性作为变通方法.
本文标题为:java – 在spring boot schema.sql文件中执行过程的问题


基础教程推荐
- Java数据结构之加权无向图的设计实现 2023-07-01
- Spring MVC数据绑定方式 2023-06-30
- java long 类型数据的赋值方式 2023-02-27
- SpringBoot详解整合Spring Boot Admin实现监控功能 2023-02-18
- java – 在MySQL集群上使用JPA / Hibernate进行外键约束检查 2023-11-01
- 如何通过Java从MS Access 2007数据库中读取Unicode字符? 2023-10-30
- SpringBoot 整合mybatis+mybatis-plus的详细步骤 2023-01-29
- Mybatis-Plus之ID自动增长的设置实现 2023-02-26
- JSP 开发SSH整合异常解决办法 2023-08-01
- 详解Spring Controller autowired Request变量 2023-08-01