我正在尝试在应用程序启动时初始化内存数据库H2中的数据。
我有一个很大的sql文件。一切都很好,直到到达定界符语句:
delimiter $
CREATE TRIGGER ins_sum BEFORE INSERT ON account
FOR EACH ROW BEGIN INSERT INTO mytable(name) values (NEW.name);
END$
delimiter $
//ANOTHER TRIGGER
这是我看到的错误:
由以下原因引起:org.h2.jdbc.JdbcSQLException:SQL语句“ delimiter [*] $ ....中的语法错误”预期为“ DELETE,DROP,DECLARE,DEALLOCATE,{”; SQL语句:... >
我已经通过DataSource编程地通过属性文件设置了MODE = MYSQL,在data.sql文件本身SET MODE MYSQL;
中设置了模式
yml文件:
spring.datasource.url
=jdbc:h2:mem:mydb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=MYSQL
spring.datasource.username: myusername
spring.datasource.password: mypassword
driver-class-name: org.h2.Driver
以编程方式:
@Bean
public DataSource dataSource() {
EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
EmbeddedDatabase db = builder
.setType(EmbeddedDatabaseType.H2)
.setName("mydb;DATABASE_TO_UPPER=false;MODE=MYSQL")
.addScript("data.sql")
.build();
return db;
}
我也尝试过完全删除定界符,但随后在下一行失败。