java - Hibernate 运行时出现 "Table not found"错误

标签 java mysql sql hibernate schema

我已成功创建数据库,没有错误,并且在创建后添加了虚拟数据。接下来,我尝试从数据库获取数据,但是我在控制台上看到了错误。它尝试创建之前创建的表。无需重新创建:/我搜索过互联网,但找不到任何与此相关的内容。

我使用MYSQL db,hibernate 4。这3个类(Material,MaterialProjectBrief,MaterialProjectImage)没有任何onetomany,manytoone注释。我还有其他具有相同结构的表,它们运行良好(执行 CRUD)。我仅使用注释,并将映射分类为 hibernate.cfg.xml。

(很抱歉写得太快,因为我现在必须离开办公室。

这是 MaterialProjectImage 类。

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class MaterialProjectImage implements Serializable {

    private static final long serialVersionUID = 3886003470849765887L;

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer id;

    @Column(name="LINK")    
    private String link;

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

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getLink() {
        return link;
    }

    public void setLink(String link) {
        this.link = link;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

}

这是日志。

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.TableMetadata

INFO: HHH000261: Table found: PORTAL.material

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.TableMetadata

INFO: HHH000037: Columns: [id, aboutus, about, sıtemap, vısıon, worklocatıon, mıssıon, customers, rad, goal]

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.TableMetadata

INFO: HHH000108: Foreign keys: []

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.TableMetadata

INFO: HHH000126: Indexes: [prımary]

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.TableMetadata

INFO: HHH000261: Table found: PORTAL.materialprojectbrief

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.TableMetadata

INFO: HHH000037: Columns: [id, tıtle, shortbrıef, ıconlınk]

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.TableMetadata

INFO: HHH000108: Foreign keys: []

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.TableMetadata

INFO: HHH000126: Indexes: [prımary]

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.DatabaseMetadata getTableMetadata

INFO: HHH000262: Table not found: MaterialProjectImage

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.TableMetadata

INFO: HHH000261: Table found: PORTAL.person

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.TableMetadata

INFO: HHH000037: Columns: [id, username, ınfo, ımgpath, name, role, password]

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.TableMetadata

INFO: HHH000108: Foreign keys: []

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.TableMetadata

INFO: HHH000126: Indexes: [prımary]

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.TableMetadata

INFO: HHH000261: Table found: PORTAL.project

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.TableMetadata

INFO: HHH000037: Columns: [id, faq, tıtle, url, ınstallatıon]

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.TableMetadata

INFO: HHH000108: Foreign keys: []

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.TableMetadata

INFO: HHH000126: Indexes: [prımary]

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.TableMetadata

INFO: HHH000261: Table found: PORTAL.projectwebview

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.TableMetadata

INFO: HHH000037: Columns: [id, ıntro, ımglınk, project_id, type]

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.TableMetadata

INFO: HHH000108: Foreign keys: [fk_9qlhqdt00j5a5hknep10wu44c]

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.TableMetadata

INFO: HHH000126: Indexes: [fk_9qlhqdt00j5a5hknep10wu44c, prımary]

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.TableMetadata

INFO: HHH000261: Table found: PORTAL.project_document

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.TableMetadata

INFO: HHH000037: Columns: [document_id, project_id]

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.TableMetadata

INFO: HHH000108: Foreign keys: [fk_6gwm4ft0jihnaprel3uem1or6, fk_ctnt2crdturw4k3xc5w4r5571]

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.TableMetadata

INFO: HHH000126: Indexes: [fk_6gwm4ft0jihnaprel3uem1or6, uk_6gwm4ft0jihnaprel3uem1or6, fk_ctnt2crdturw4k3xc5w4r5571]

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.DatabaseMetadata getTableMetadata

INFO: HHH000262: Table not found: MaterialProjectImage

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.SchemaUpdate execute

ERROR: HHH000388: Unsuccessful: create table MaterialProjectImage (id integer not null auto_increment, LINK varchar(255), TITLE varchar(255), primary key (id))

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.SchemaUpdate execute

ERROR: Table 'materialprojectimage' already exists

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.SchemaUpdate execute

INFO: HHH000232: Schema update complete

最佳答案

我怀疑这是区分大小写的。根据 MySQL 文档:

表和数据库名称如何存储在磁盘上以及如何在 MySQL 中使用,受到 lower_case_table_names 系统变量的影响,您可以在启动 mysqld 时设置该变量。 lower_case_table_names 可以采用下表中所示的值。在 Unix 上,lower_case_table_names 的默认值为 0。在 Windows 上,默认值为 1。在 Mac OS X 上,默认值为 2。

值的含义 0 表和数据库名称使用 CREATE TABLE 或 CREATE DATABASE 语句中指定的字母大小写存储在磁盘上。名称比较区分大小写。如果您在文件名不区分大小写的系统(例如 Windows 或 Mac OS X)上运行 MySQL,则不应将此变量设置为 0。如果在不区分大小写的文件系统上使用 --lower-case-table-names=0 强制此变量为 0,并使用不同的字母大小写访问 MyISAM 表名,则可能会导致索引损坏。 1 表名称以小写形式存储在磁盘上,名称比较不区分大小写。 MySQL 在存储和查找时将所有表名转换为小写。此行为也适用于数据库名称和表别名。 2 表和数据库名称使用 CREATE TABLE 或 CREATE DATABASE 语句中指定的字母大小写存储在磁盘上,但 MySQL 在查找时将它们转换为小写。名称比较不区分大小写。这仅适用于不区分大小写的文件系统! InnoDB 表名以小写形式存储,如 lower_case_table_names=1。

http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html

查看您的错误日志,很可能是:

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.DatabaseMetadata getTableMetadata

信息:HHH000262:找不到表:MaterialProjectImage

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.SchemaUpdate 执行

错误:HHH000388:失败:创建表 MaterialProjectImage(id 整数不为 null auto_increment、LINK varchar(255)、TITLE varchar(255)、主键 (id))

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.SchemaUpdate 执行

错误:表“materialprojectimage”已存在

22.Kas.2013 20:17:05 org.hibernate.tool.hbm2ddl.SchemaUpdate 执行

信息:HHH000232:架构更新完成

关于java - Hibernate 运行时出现 "Table not found"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20152311/

相关文章:

java - 日志记录异常问题

java - 在Java中将多项式乘以常数

php - 如何将3个下拉列表中的值插入mysql中的1列

java - 如何在 Java 程序中访问 SQL count() 查询的值

java.lang.Class 泛型和通配符

java - 如何在另一个调用中正确返回 token ?

mysql - 确保 SQL 父类(super class)型表具有子类型

mysql - 使用左连接的 SQL 计数

sql - 在 Big Query 中通过一系列表从 Google Analytics 获取扁平化命中数据

mysql - 在相互引用的表中使用外键的正确方法是什么