com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表不存在

Posted

技术标签:

【中文标题】com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表不存在【英文标题】:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table doesn't exist 【发布时间】:2016-04-16 04:15:15 【问题描述】:

当我在http://localhost:8080/api/projects 访问它时,我猜它连接到我的 mysql 数据库,其中我有一个表 PROJECTS(ID, TITLE),但显示以下错误

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'bugtrackerdb.projects' doesn't exist
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_40]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_40]
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]

实体

@Entity
@Table(name = "PROJECTS")
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
public class Project implements Serializable 

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(name = "TITLE")
private String title;

@OneToMany(mappedBy = "project", fetch = FetchType.LAZY)
private Set<Module> modules;

@OneToMany(mappedBy = "project", fetch = FetchType.LAZY)
private Set<Bug> bugs;

资源

@Component
@Path("/projects")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class ProjectsResource 

    @Autowired
    ProjectService projectService;

    @GET
    public List<Project> getProjects() 
        return projectService.getAllProjects();
    

    @POST
    public Project createProject(Project project) 
        return projectService.createProject(project);
    

存储库

public interface ProjectRepository extends JpaRepository<Project, Long> 


休眠属性

hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
hibernate.ejb.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy
hibernate.format_sql=true
hibernate.show_sql=true
entitymanager.packages.to.scan=intuitio.kickstart.jersey.domain
hibernate.auto=create

连接属性

db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://127.0.0.1:3306/bugtrackerdb
db.username=root
db.password=pass

【问题讨论】:

在数据库“bugtrackerdb”上运行“显示表”并在此处发布 @premkumar 'BUGS' 'COMMENTS' 'MODULES' 'PROJECTS' 'USERS' 你能发布数据源连接属性吗?连接属性 @premkumar 将其添加到帖子底部 【参考方案1】:

您应该使用hibernate.hbm2ddl.auto 而不是hibernate.auto 创建数据库。

【讨论】:

感谢您的回答。事实上,我有一个 ApplicationConfig 类,我在其中设置了从 *.properties 文件中提取的 dataSource 和 hibernate 属性,但我没有在该类中正确编写“hibernate.hbm2ddl.auto”。 @NicolaeFocsa 欢迎您。您可以参考HibernateSessionFactory.Builder 作为配置实用程序类的示例。 @v.ladynev 我正在使用 hibernate.hbm2ddl.auto 并且仍然遇到同样的错误! :3 @FuSsA 请提出您自己的问题并提供您的配置。 @v.ladynev link

以上是关于com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表不存在的主要内容,如果未能解决你的问题,请参考以下文章

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:重复条目 '' 键 'PRIMARY'

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障?

错误 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表不存在

使用 JDBC 访问远程 MySQL 数据库时出现 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障