【问题标题】:Spring: Setup MySQL Database in ProjectSpring:在项目中设置 MySQL 数据库
【发布时间】:2017-09-15 19:44:01
【问题描述】:

我尝试在我的项目中包含一个 MySQL-DB。

我已经安装了 MySQL 程序,创建了一个数据库(模式)并为访问验证设置了密码和用户名。

包含 pom 文件依赖等。

现在我被我的 application.properties 卡住了:

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/asndb
spring.datasource.username=root
spring.datasource.password=asnTeam1
spring.jpa.hibernate.ddl-auto=create

在 MySQL 管理器中,我可以看到模型的所有属性,所以连接应该可以正常工作,对吧?

我做错了什么?我需要 MySQL 客户端吗?

更新更改了 application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/asndb?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=asnTeam1
spring.jpa.hibernate.ddl-auto=create
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1

spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.jpa.show-sql = true
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

spring.datasource.platform=mysql
spring.datasource.schema=schema-mysql.sql
spring.datasource.data=data-mysql.sql
spring.datasource.initialize=true
spring.datasource.continue-on-error=true

现在我想用 MySQL 客户端打开我的 data.sql 文件。但是我的 sql 语法中有错误。在插入语句之后:

INSERT INTO USER (FIRST_NAME, LAST_NAME, USERNAME, PASSWORD, USER_ROLE) VALUES('Admin', 'Istrator', 'admin', '$2a$10$W9xQIwa/FstPUvcbzJXnQ.XjVdTyIcCEp.g6VCq1gYuSsQNjJjbJG', 'ADMIN')

INSERT INTO USER (FIRST_NAME, LAST_NAME, USERNAME, PASSWORD, USER_ROLE) VALUES('Bernd', 'Menia', 'bernd', '$2a$10$6dQcayeT/JAFvgFvzIjlcew5z9cmdCrGlv57.BGnIKvPXTDsQm7hG', 'PARENT')
INSERT INTO PARENT (FAMILY_STATUS, LOCATION, POSTCODE, STREET_NAME, IMG_NAME, STATUS, ID) VALUES ('MARRIED', 'Innsbruck', '6020', 'Bahnhofstraße', 'john.jpg',TRUE, SELECT ID FROM USER WHERE USERNAME = 'bernd')

我做错了什么?

解决方案:

从上方插入较大的 application.properties,对于持久数据库,在第一次 spring-boot 后注释掉 ddl-auto=trueinitialize=true

User是MySQL中的保留关键字,不允许使用。

用 spring-app 中的 data.sql 文件填充 mySQL DB 是不可能的,所以我通过 MySQL-Workbench 打开文件并执行语句。

【问题讨论】:

标签: mysql spring spring-data-jpa


【解决方案1】:

从这个post 中遇到了类似的问题。希望这会有所帮助。

代替

spring.datasource.url=jdbc:mysql://localhost:3306/asndb

试试这个:

spring.datasource.url=jdbc:mysql://localhost:3306/asndb?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

【讨论】:

  • 感谢您的帮助.. 但现在数据库中没有来自我的 data.sql 的数据了
  • 尝试使用控制台中的 mySQL 命令将一些数据添加到数据库中并进行检查。
  • 它不起作用。当我重新执行 SFW 语句时,表为空。我试图打开我的 data.sql 文件,但它说我的 sql 语法中有错误...问题中的详细信息
  • user 是 SQL 中的保留关键字。因此,您不能将其用作表名。使用另一个名称(例如 user_table)创建一个表。检查此链接 - drupal.org/docs/develop/coding-standards/…@SteveOhio
【解决方案2】:

要在您的数据库表中插入数据,请确保数据库已打开,因此在您的 MySQL 客户端中,首先:

mysql>use asndb;

并检查您的表:userparent 确实存在:

mysql>show tables;

之后你可以插入你的数据:

INSERT INTO asndb.USER(.....);

USER你不能用它

【讨论】:

    猜你喜欢
    • 2017-12-31
    • 2018-03-30
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    相关资源
    最近更新 更多