2016-08-14 63 views
1

我有一個Spring Boot應用程序,我需要它在數據庫初始化期間以管理員帳戶填充users表作爲root帳戶。預加載使用數據的Springboot應用程序

各地的網絡檢查,有人告訴我,以確保我有這個在我的application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/dbname?createDatabaseIfNotExist=true 
spring.datasource.username=root 
spring.datasource.password= 

spring.jpa.generate-ddl= true 
spring.jpa.hibernate.ddl-auto= update 
spring.datasource.initialize=true 
spring.jpa.hibernate.dialect= org.hibernate.dialect.MySQL5Dialect 

我也有data.sqlresourses文件夾下面的SQL語句

INSERT INTO users (username, password) VALUES ('admin', '$shiro1$SHA-256$500000$FkZcH5hP9oiYkP6UBK/84Q==$RHFwVRYTKNnCpKtlOu3Nfts8I+3Azfw5iUWokmW0dgI=') 

當我運行應用程序中,此數據未插入到用戶表中

更新

我有this Github repo進行演示。

+0

爲什麼你有領先的空間屬性值?我不認爲這可能是一個問題,但我會嘗試'spring.jpa.generate-ddl = true'等等。 –

回答

1

你也必須有一個schema.sql文件,它不能爲空;這是一個黑客,但你可以創建一個包含以下內容的schema.sql

SELECT 1; 

,一切都應該正常工作。

有關更多詳細信息,請參閱official documentation

+0

嗨,當我添加schema.sql,插入數據。問題在於,我每次運行應用程序時都會一直插入這個問題。 –

+1

這就是它應該做的事情 - Spring沒有辦法知道它是否已經被執行過。這就是像Liquibase這樣的遷移工具的用處 –

+1

嘗試在插入中使用'on duplicate key ignore'。 –