java - 每次启动应用程序时,Spring data.sql 文件都会添加一条新记录。
问题描述
这是我的application.properties
文件:
spring.datasource.url= jdbc:postgresql://localhost:5432/Crypto
spring.datasource.username=postgres
spring.datasource.password=wololo
spring.jpa.hibernate.ddl-auto=update
spring.datasource.initialization-mode=always
这是我的data.sql
文件:
INSERT INTO crypto(departure, details, lowest_price_date, lowest_price_ever, coin_name, url)
VALUES (null, null, null, 10, 'foooobs', 'http://foo.foo');
问题是每次我重新启动应用程序时,都会添加一条新记录,即使它存在于上一个会话中。我只想用数据初始化数据库一次,而不是改变它。
有任何想法吗?
解决方案
一种可能的解决方案是使用 fixed ids
:
INSERT INTO
crypto (id, departure, details, lowest_price_date, lowest_price_ever, coin_name, url)
^^
VALUES (1, null, null, null, 10, 'foooobs', 'http://foo.foo');
^
那么会发生什么,首先你正在spring.jpa.hibernate.ddl-auto=update
使用这个解决方案,如果记录不退出然后创建一个新记录,如果它退出,那么只需更新属性,而不是创建新记录。
或者你可以看看flyway,在这种情况下它是一个很好的工具。
推荐阅读
- flutter - 如何在颤振应用程序中剪切列表?
- powershell - > 和 start-transcript 之间的奇怪交互(powershell 错误?)
- image - 一切都在显示,除了图像 Flutter
- react-native - 使用 fetch api 时服务器返回“未登录”
- python - 有没有办法在 SQLite 中执行条件选择语句?
- excel - Powershell 中心 Excel 单元格文本
- c# - 减少/删除 ASP.NET Core 中的重复业务逻辑检查
- ruby-on-rails - 为什么 gem Spring 会出现错误?
- c++ - 为什么有专门为未初始化内存定义的 C++ 算法?
- php - 购买特定产品 Woocommerce 时向买家发送自定义通知