【问题标题】:jdbc4.MySQLSyntaxErrorException: Table doesn't exist in databasejdbc4.MySQLSyntaxErrorException:数据库中不存在表
【发布时间】:2016-04-24 13:44:48
【问题描述】:

我正在使用 SpringBoot 开发一个 Web 应用程序,这是我的 application.properties 文件,用于指定访问数据库的凭据:

spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/Salamander
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect

但是当我尝试运行 SpringBoot 应用程序时,它给了我这个错误:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'salamander.user' doesn't exist
    at sun.reflect.GeneratedConstructorAccessor72.newInstance(Unknown Source) ~[na:na]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_40]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422) ~[na:1.8.0_40]
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) ~[mysql-connector-java-5.1.38.jar:5.1.38]
    at com.mysql.jdbc.Util.getInstance(Util.java:387) ~[mysql-connector-java-5.1.38.jar:5.1.38]
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:939) ~[mysql-connector-java-5.1.38.jar:5.1.38]
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878) ~[mysql-connector-java-5.1.38.jar:5.1.38]
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814) ~[mysql-connector-java-5.1.38.jar:5.1.38]
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2478) ~[mysql-connector-java-5.1.38.jar:5.1.38]
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2625) ~[mysql-connector-java-5.1.38.jar:5.1.38]
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2551) ~[mysql-connector-java-5.1.38.jar:5.1.38]
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861) ~[mysql-connector-java-5.1.38.jar:5.1.38]
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1962) ~[mysql-connector-java-5.1.38.jar:5.1.38]
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:82) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
    ... 69 common frames omitted

当然,我有一个名为 user 的实体,但数据库是空的。但是

spring.jpa.hibernate.ddl-auto=create-drop

应该说休眠在数据库中再次创建表,对吗?所以有什么问题?

如果我用远程数据库做同样的事情,即使远程数据库是空的,它也可以工作。

【问题讨论】:

  • 你解决了你的prblm吗?
  • @FuSsA 我认为问题出在spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect这句话上,我删除了它并开始工作......
  • 它应该与您期望使用的方言相对应,例如 org.hibernate.dialect.MySQL5Dialect 对我来说非常适合。还要确保你没有在这里使用任何已弃用的方言类。
  • 嗨@nbro,我收到了com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表'springboot.batch_job_instance'不存在你对这个问题有什么想法吗?
  • @BandhamManikanta 对不起,伙计,我有一段时间没有使用 Spring。也许再问一个问题。

标签: java mysql spring hibernate repository


【解决方案1】:

此问题已通过删除修复 spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialec‌​t

【讨论】:

    猜你喜欢
    • 2016-04-16
    • 2013-04-23
    • 2016-08-23
    • 2020-05-15
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-19
    相关资源
    最近更新 更多