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。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐