mysql - H2中的MySQL分隔符
问题描述
我正在尝试在应用程序启动时初始化内存数据库 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 语句:...
我已经通过属性文件设置了 MODE=MYSQL,以编程方式使用 DataSource,在 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;
}
我也尝试过完全删除分隔符,但在下一行失败了。
解决方案
推荐阅读
- c# - 如何将一些 html 元素转换为 span 元素并从中提取坐标?
- python - while 循环没有进行到下一次迭代
- redis - 使用 serde_json 解析 JSON 字符串
- git - 使用 Jenkins 复制 github 存储库
- wordpress - 当我在ubuntu中更改phpstorm中的代码时,是否存在重新加载浏览器的方法?
- linux - 在不阻塞和关闭读取器的情况下连续写入管道
- android - 启动时颤动状态栏颜色
- python - pandas:根据其他列用一个特定行替换多行中的一个单元格的值
- c# - Redis 超时错误
- python - Tkinter OptionMenu 在我添加值时没有更新