Hibernate使用mysql时type=InnoDB报错

纸上得来终觉浅

第一次运行程序时,将Hibernte中的hibernate.hbm2ddl.auto设置成create,让Hibernate帮助自动建表,但不成功,报了如下信息:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'type=InnoDB' at line 1
我很纳闷,为什么之前没有这样的问题呢?难道是建表语句语法有误?对比后,似乎不是。后来再仔细阅读报错信息,目光定位在“MySQL server version for the right syntax ”!!后来,网上查找一番,发现是因为type=InnoDB在5.0以前是可以使用的,但5.1之后就不行了。如果我们把type=InnoDB改为engine=InnoDB就不会有这个问题。但是,我想使用Hibernate,自动帮我建表,怎么办呢。这就与我们指定的数据库方言(dialect)有关了。
之前我的配置是:
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialectprop> 
现在改为
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialectprop>  

好了,这样问题就解决了。总结下:

hibernate中,对于mysql version5.1~5.5,都是‘MySQL5InnoDBDialect’  !!

原文章地址:http://blog.itpub.net/29900383/viewspace-1407348/

### 回答1: 在 MySQL 中,语法中出现"near 'type = innodb'"是因为 'TYPE = InnoDB' 是在创建表的语句中使用错误的关键字。在 MySQL 5.5.3 之前的版本中,'TYPE' 关键字被用于指定表的存储引擎,而不是 'ENGINE' 关键字。从MySQL 5.5.3版本开始,'TYPE' 被 'ENGINE' 替代。 正确的语法应该是使用 'ENGINE = InnoDB' 来指定表的存储引擎。示例代码如下: CREATE TABLE table_name ( column1 datatype, column2 datatype, ... ) ENGINE = InnoDB; 需要注意的是,'ENGINE' 关键字后面应该是等号(=)而不是冒号(:)。如果不指定存储引擎,默认情况下表将使用 MyISAM 引擎。 如果你在代码或脚本中看到这个错误,你可以重新编写语句,将 'TYPE' 修改为 'ENGINE'。这样就可以解决这个语法错误。 所以,正确的表创建语句应该是: CREATE TABLE 表名 ( 列1 数据类型, 列2 数据类型, ... ) ENGINE = InnoDB; 通过修正 'TYPE = InnoDB' 到 'ENGINE = InnoDB',你就可以顺利创建一个使用 InnoDB 存储引擎的表了。 ### 回答2: 语法错误的原因是type = innodb这部分在语法上是不正确的。在MySQL中,用于定义表的存储引擎的语法应该是ENGINE=InnoDB。 正确的语法是:ENGINE=InnoDB,其中ENGINE是存储引擎的关键字,InnoDB是具体的存储引擎名称。这个语法用于创建表指定使用的存储引擎。 InnoDB是一种可靠性高、性能好的存储引擎,是MySQL的默认存储引擎。它支持事务、行级锁定和外键约束等功能,适用于对数据完整性和一致性要求较高的应用。 存储引擎是决定MySQL表如何存储和操作数据的重要部分,不同的存储引擎具有不同的特点和适用场景。在选择存储引擎,需要考虑数据的读写频率、事务要求、性能需求和数据完整性等因素。 总之,正确的语法是ENGINE=InnoDB,用于在创建表指定使用InnoDB存储引擎。 ### 回答3: 在使用MySQL数据库,当看到错误消息"near 'type = innodb'",通常是因为在创建表使用了错误的语法。 在MySQL的旧版本中,用于指定表的存储引擎的语法是"type = xxx",其中"xxx"代表具体的存储引擎类型。然而,从MySQL 5.5版本开始,此语法已经过,应该使用"engine = xxx"来指定存储引擎。 因此,在遇到"near 'type = innodb'"这个错误消息,可能是因为在创建表使用了旧版本的语法。为了解决这个问题,可以将"type = innodb"替换为"engine = innodb",确保使用正确的语法。修改后的语句应该类似于: CREATE TABLE 表名 ( 列1 数据类型, 列2 数据类型, ... ) engine = innodb; 需要注意的是,具体的表名、列名和数据类型应该根据实际情况进行相应的替换。 通过使用正确的语法,就可以顺利地创建使用InnoDB存储引擎的表了。此存储引擎是MySQL的默认存储引擎,提供了事务处理和行级锁定等功能,适合处理复杂的数据操作需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值