2016-08-14 64 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'。 –