【问题标题】:Hibernate "Table not found" error on runtime运行时出现休眠“找不到表”错误
【发布时间】:2013-12-07 18:33:14
【问题描述】:

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

我使用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

信息:HHH000261:找到的表:PORTAL.material

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

信息:HHH000037:列:[id,aboutus,about,sıtemap,vısıon, 工作地点、任务、客户、弧度、目标]

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

信息:HHH000108:外键:[]

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

信息:HHH000126:索引:[主要]

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

信息:HHH000261:找到的表:PORTAL.materialprojectbrief

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

信息:HHH000037:列:[id、tıtle、shortbrıef、ıconlınk]

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

信息:HHH000108:外键:[]

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

信息:HHH000126:索引:[主要]

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

信息:HHH000262:找不到表:MaterialProjectImage

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

信息:HHH000261:找到的表:PORTAL.person

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

信息:HHH000037:列:[id、用户名、ınfo、ımgpath、名称、角色、 密码]

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

信息:HHH000108:外键:[]

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

信息:HHH000126:索引:[主要]

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

信息:HHH000261:找到的表:PORTAL.project

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

信息:HHH000037:列:[id, faq, tıtle, url, ınstallatıon]

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

信息:HHH000108:外键:[]

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

信息:HHH000126:索引:[主要]

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

信息:HHH000261:找到的表:PORTAL.projectwebview

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

信息:HHH000037:列:[id, ıntro, ımglınk, project_id, type]

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

信息:HHH000108:外键:[fk_9qlhqdt00j5a5hknep10wu44c]

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

信息:HHH000126:索引:[fk_9qlhqdt00j5a5hknep10wu44c,主要]

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

信息:HHH000261:找到的表:PORTAL.project_document

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

信息:HHH000037:列:[document_id,project_id]

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

信息:HHH000108:外键:[fk_6gwm4ft0jihnaprel3uem1or6, fk_ctnt2crdturw4k3xc5w4r5571]

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

信息:HHH000126:索引:[fk_6gwm4ft0jihnaprel3uem1or6, uk_6gwm4ft0jihnaprel3uem1or6, fk_ctnt2crdturw4k3xc5w4r5571]

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 整数不为空 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 mysql sql hibernate schema


    【解决方案1】:

    我怀疑这是区分大小写的。根据 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 执行

    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 执行

    错误:表“materialprojectimage”已存在

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

    信息:HHH000232:架构更新完成

    【讨论】:

    • 谢谢仅供参考。我很感激。此外,我对区分大小写有点怀疑,但我不知道在哪里看和做什么。此外,我没有将名称比较设置为0。我在Windows上运行@mohr_michael_a。明天我必须去办公室处理这个问题。
    【解决方案2】:

    我已根据 here@Entity 注释下添加 @Table(name="material") 注释来解决问题。在此之前,我更改了 lower_case_table_names 但问题仍然存在。然后我意识到添加标签注释。谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-19
      • 2013-07-06
      • 2014-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-19
      • 2013-08-16
      相关资源
      最近更新 更多