У меня есть бэкэнд-приложение для весенней загрузки, и я ищу способ вставить данные инициализации в базу данных MySQL, но только каждый раз, когда создаются таблицы. Я сделал это с data.sql, но данные вставляются каждый раз при запуске сервера. Надеюсь, мой вопрос ясен. Спасибо за ваше время :)
Или сначала выполните запрос количества, чтобы увидеть, есть ли в таблице уже данные или нет.
Инициализация базы данных, предоставляемый Spring Boot, предназначен для использования только со встроенными базами данных. Таким образом, это более или менее предполагает, что вам необходимо инициализировать базу данных при каждом запуске приложения.
Для правильной инициализации и развития постоянных баз данных используйте Пролетный путь или Ликвибаза
Наверное, прошло слишком много времени с тех пор, как я задавал этот вопрос. Но я все равно хотел тебя поблагодарить. :)
У меня он нормально работает без использования Flyway.
У меня есть приложение для весенней загрузки и Mysql db. У меня есть несколько файлов data. *. Sql. Application.properties имеет следующие свойства.
## To enable reading data from multiple files
spring.datasource.data = classpath:data.*.sql
# Initialize the datasource with available DDL and DML scripts
spring.datasource.initialization-mode=always
# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto = update
Один из файлов data. *. Sql:
INSERT IGNORE INTO complaintPriority(name) VALUES('EMERGENCY');
INSERT IGNORE INTO complaintPriority(name) VALUES('HIGH');
INSERT IGNORE INTO complaintPriority(name) VALUES('MEDIUM');
Состав модельного класса:
@Entity
@Access(value=AccessType.FIELD)
@Table(name = "complaintPriority", uniqueConstraints = {
@UniqueConstraint(columnNames = {
"complaintPriorityId"
})
})
public class ComplaintPriority {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long complaintPriorityId;
// Other variables and methods
Используйте для этого что-нибудь вроде Flyway или Liquibase.