Mas*_*ode 6 java mysql sql-scripts spring-boot
我正在使用 Spring Boot 数据库初始化,使用 Spring JDBC 和 schema.sql 文件。我正在使用 MYSQL
如果我在 schema.sql 中有简单的表创建,如下所示,它可以正常工作
CREATE TABLE Persons
(
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);
Run Code Online (Sandbox Code Playgroud)
但是当我添加一个触发器时,它在 MySQL Workbench 中正确运行
DROP TRIGGER IF EXISTS Persons_log_update;
CREATE TRIGGER Persons_log_update
BEFORE UPDATE ON Persons
FOR EACH ROW
BEGIN
INSERT INTO Personshistory(PersonID,LastName,FirstName,Address,City)
values(OLD.PersonID,OLD.LastName,OLD.FirstName,OLD.Address,OLD.City);
END ^;
Run Code Online (Sandbox Code Playgroud)
我用过 spring.datasource.separator=^; 在此处提到的属性文件中
但它失败了,但有例外
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 'CREATE TRIGGER Persons_log_update BEFORE UPDATE ON Persons FOR EACH ROW BE' at line 1
Run Code Online (Sandbox Code Playgroud)
我想我的问题与这个问题相同,但那是在 postgresql 中。
编辑:如果我删除 spring.datasource.separator=^; 来自属性文件并具有以下光标
DROP TRIGGER IF EXISTS Persons_log_update;
DELIMITER $$
CREATE TRIGGER Persons_log_update
BEFORE UPDATE ON Persons
FOR EACH ROW
BEGIN
INSERT INTO Personshistory(PersonID,LastName,FirstName,Address,City)
values(OLD.PersonID,OLD.LastName,OLD.FirstName,OLD.Address,OLD.City);
END$$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
它给出了同样的错误
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 TRIGGER Persons_log_update BEFORE UPDATE ON Persons FO' at line 1
Run Code Online (Sandbox Code Playgroud)
spring.datasource.separator=^;当我添加并且application.properties程序/触发器之外的每一行都应以示例终止时,我的问题得到解决^;
,如下所示:
DROP TRIGGER IF EXISTS Persons_log_update ^;
CREATE TRIGGER Persons_log_update
BEFORE UPDATE ON Persons
FOR EACH ROW
BEGIN
INSERT INTO Personshistory(PersonID,LastName,FirstName,Address,City)
values(OLD.PersonID,OLD.LastName,OLD.FirstName,OLD.Address,OLD.City);
END ^;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3579 次 |
| 最近记录: |