idea配置h2数据库后,无法执行sql语句(schema.sql)
1.idea配置好h2数据库后,启动项目报错:找不到表
org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "T_DEMO" not found; SQL statement:
如下图

但是明明配置了schema.sql。如下图。为什么没有执行呢。
解决方法:properties里面加这一句:
spring.datasource.initialization-mode=always
如下图,把红色框框的注释放开

变成这样

再次运行:搞定。

后来研究了下,这个always模式,是每次都重新执行schema.sql。这个可以用做内嵌模式。如果不想每次都清空数据,可以设置成embedded或者never。
如下图,always情况下,每次都是同样的结果。

如果设置成never或embedded,则每次运行,上次的数据也会保留。如下图


2.配置h2数据库,密码错误,修改密码后不生效问题
而且删除数据库也不好使。
原因:h2数据库本地有缓存,会默认使用本地缓存。
解决方案:删除缓存。重新配置
1)删除数据库
1:找到database。2:找到h2数据库,鼠标右键 3:选择remove data source

2)找到本地h2缓存,删掉
下图中,我的电脑,c盘,用户,昵称里面,最下面的两个文件就是,直接删除

3)重新配置h2
1:点击加号+ 2:选择datasource 3:选择 H2

4:选择embedded(视情况,embedded是内存数据库只用一次再次使用数据清空。remote是重复使用),设置用户名和密码(这里的用户名和密码要与properties里面的配置的一致),点击apply


如上两个地方的配置用户名和密码要一致
这样运行就可以了。但是后来我发现,选了embedded后,再次打开,他还会变成remote。这样的话,如果使用内嵌模式embedded时,需要在schema.sql中这样写:
drop table t_demo if exists;

不然重复启动项目就会报错表已经存在。同时properties里面需要设置为always。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)