Hibernate报错,没有权限创建表 HT_xxx

某功能在测试环境没问题,发布生产环境后,出现如下错误:
HT_xxx表不存在,无法执行插入操作,跟踪发现,hibernate内部报错,没有创建表HT_xxx的权限。

一样的代码,一样的配置,测试环境没问题,生产环境报错;
由于生成数据库使用的是阿里云的MySQL数据库,猜测可能是由于帐号权限不够导致(阿里云不提供root帐号),

但是,经过测试,发现使用的帐号具有创建表的权限,只好求助阿里团队,


【问】
db_xxx 库,admin帐号操作, java代码通过hibernate执行update语句【update table_a set status = :status where id = :id】。
相同的代码,测试环境ok,生产环境失败;
跟踪代码,发现,hibernate需要额外执行一条语句【insert into HT_table_a select tablea0_.id as id from table_a tablea0_ where tablea0_.id=?】,
说明hibernate需要额外创建临时表,但该操作失败,从而导致更新操作失败。
请问需要设定什么权限吗? 
答:
经查,您的RDS是mysql 5.6版本,对于mysql 5.6是需要在事务以外进行临时表的创建的,如果是5.5可以在事务内进行临时表创建。
您可以确认下这个临时表的操作是否在事务中进行的,如果是事务中执行的这个操作,建议您进行改写,比如是否可以现手动创建这个临时表,然后再执行观察。

至今,不知道该问题的最终原因,只好曲线救国,修改代码,将HQL语句修改为对应的SQL语句。如下:





评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值