Hibernate在MySQL自动建表时报了以下错误~ ERROR org.hibernate.tool.hbm2ddl.SchemaUpdate - Unsuccessful: create table Advert (id bigint not null auto_increment, space varchar(255), administrators varchar(4000), readers varchar(4000), editors varchar(4000), creator varchar(255), salesman varchar(255), spaceSize varchar(255), advertType varchar(255), createDate varchar(255), contactName varchar(255), receivableDate varchar(255), money varchar(255), publishTime varchar(255), advertName varchar(255), salesmanId varchar(255), newsSerialNumber varchar(255), advertDate varchar(255), draftDate varchar(255), spaceEdit varchar(255), newsAdd varchar(255), drafter varchar(255), advertContent varchar(1300), remack varchar(4000), contract_id bigint, customer_id bigint, primary key (id)) ERROR org.hibernate.tool.hbm2ddl.SchemaUpdate - Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs 自己算了一下,这张表怎么都还没到65535啊~ 后来上网找了一下,发现UTF-8编码的,一个字符当3个算~郁闷~ 然后自己算了一下,确实超过了,然后减少了其中一个varchar,表就建起来了~ 再后来上官网看到好像是InnoDB限制了,但它又没说怎么去改(最主要是我不知道InnoDB是什么……)! 所以想请教一下大家,是否有办法改一下什么配置能让它把表建起来~谢谢~ 

解决方案 »

  1.   

    innodb是表存储引擎类型,如果你要使用事务,最好就用这个了。
      

  2.   

    You have to change some columns to TEXT or BLOBs
    已经说的很清楚了啊
      

  3.   

    You have to change some columns to TEXT or BLOBs  把列该成text或blobs类型。
    要不试一下这个:alter talbe tablename type=INNODB;INNODB是表类型,支持事务,myisam也是表类型,不过不支持事务。
      

  4.   


    改数据类型没试过,不过改成text会不会有什么问题呢?个人感觉65535这个数字是不是少了点?那Mysql如何应对大数据量的情况呢?所以想,是不是有配置可以改这个数字呢?
      

  5.   

    如果可以改数据库,是不是考虑下改字段的类型啊,好像你用的都是varchar类型的。
      

  6.   

    超长,可以将部分字段置为text类型