Error executing DDL "create table hibernate_sequence (next_val bigint) engine=InnoDB" via JDBC State

完美解决SpringDataJPA报错create table hibernate_sequence (next_val bigint) type=MyISAM Hibernate: create t 问题描述 用Spring Boot JPA自动生成数据库的表的时候 报了一个错 SpringBoot版本:2.2.6.RELEASE MySQL版本:5.6 2020-04-09 12:52:29.990 INFO 14120 --- [ restartedMain] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.MySQLInnoDBDialect Hibernate: create table hibernate_sequence (next_val 立即下载

spring boot启动报错:

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "create table hibernate_sequence (next_val bigint) engine=InnoDB" via JDBC Statement
    at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final]
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlString(AbstractSchemaMigrator.java:559) [hibernate-core-5.4.10.Final.jar:5.4.10.Final]
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlStrings(AbstractSchemaMigrator.java:504) [hibernate-core-5.4.10.Final.jar:5.4.10.Final]

。。。

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "insert into hibernate_sequence values ( 1 )" via JDBC Statement
    at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final]
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlString(AbstractSchemaMigrator.java:559) [hibernate-core-5.4.10.Final.jar:5.4.10.Final]
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlStrings(AbstractSchemaMigrator.java:504) [hibernate-core-5.4.10.Final.jar:5.4.10.Final]
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.createTable(AbstractSchemaMigrator.java:277) [hibernate-core-5.4.10.Final.jar:5.4.10.Final]
    at org.hibernate.tool.schema.internal.GroupedSchemaMigratorImpl.performTablesMigration(GroupedSchemaMigratorImpl.java:71) [hibernate-core-5.4.10.Final.jar:5.4.10.Final]
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration(AbstractSchemaMigrator.java:207) [hibernate-core-5.4.10.Final.jar:5.4.10.Final]
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:114) [hibernate-core-5.4.10.Final.jar:5.4.10.Final]
    at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:184) [hibernate-core-5.4.10.Final.jar:5.4.10.Final]
    at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:73) [hibernate-core-5.4.10.Final.jar:5.4.10.Final]
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:320) [hibernate-core-5.4.10.Final.jar:5.4.10.Final]
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:462) [hibernate-core-5.4.10.Final.jar:5.4.10.Final]
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1237) [hibernate-core-5.4.10.Final.jar:5.4.10.Final]
    at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) [spring-orm-5.2.3.RELEASE.jar:5.2.3.RELEASE]
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) [spring-orm-5.2.3.RELEASE.jar:5.2.3.RELEASE]
 

这是因为entity类里定义的id列使用了:

@GeneratedValue

因这使用的是MySQL数据库,所以把注解改成:

@GeneratedValue(strategy = GenerationType.IDENTITY)

即可,如下:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

再启动不再报错。

分析:

jpa的主键生成策略有四种,默认是GenerationType.Auto

TABLE:使用一个特定的数据库表格来保存主键。 
SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。(Oracle,PostgreSQL,DB2) 
IDENTITY:主键由数据库自动生成(主要是自动增长型) 。(mysql)
AUTO:主键由程序控制。

GenerationType.TABLE

使用一个特定的数据库表格来保存主键,持久化引擎通过关系数据库的一张特定的表格来生成主键,这种策略的好处就是不依赖于外部环境和数据库的具体实现,在不同数据库间可以很容易的进行移植,但由于其不能充分利用数据库的特性,所以不会优先使用。该策略一般与另外一个注解一起使用@TableGenerator,@TableGenerator注解指定了生成主键的表(可以在实体类上指定也可以在主键字段或属性上指定),然后JPA将会根据注解内容自动生成一张表作为序列表(或使用现有的序列表)。如果不指定序列表,则会生成一张默认的序列表,表中的列名也是自动生成,数据库上会生成一张名为sequence的表(SEQ_NAME,SEQ_COUNT)。序列表一般只包含两个字段:第一个字段是该生成策略的名称,第二个字段是该关系表的最大序号,它会随着数据的插入逐渐累加。

@Id
    @Column(name="id")
    @GeneratedValue(strategy=GenerationType.TABLE,generator="table_gen")
    @TableGenerator(
            name = "table_gen",  
            table="fendo_generator",  
            pkColumnName="seq_name",     //指定主键的名字
            pkColumnValue="fendos",      //指定下次插入主键时使用默认的值
            valueColumnName="seq_id",    //该主键当前所生成的值,它的值将会随着每次创建累加
            initialValue = 1,            //初始化值
            allocationSize=1             //累加值
            )
    public Integer getUid() {
        return uid;
    }
 

GenerationType.SEQUENCE

在某些数据库中,不支持主键自增长,比如Oracle,其提供了一种叫做"序列(sequence)"的机制生成主键。此时,GenerationType.SEQUENCE就可以作为主键生成策略。该策略的不足之处正好与TABLE相反,由于只有部分数据库(Oracle,PostgreSQL,DB2)支持序列对象,MYsql不支持序列,所以该策略一般不应用于其他数据库。类似的,该策略一般与另外一个注解一起使用@SequenceGenerator,@SequenceGenerator注解指定了生成主键的序列.然后JPA会根据注解内容创建一个序列(或使用一个现有的序列)。如果不指定序列,则会自动生成一个序列SEQ_GEN_SEQUENCE。

@Id  
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator="fendo_seq")  
@SequenceGenerator(name="fendo_seq", sequenceName="seq_name")
 


GenerationType.IDENTITY

此种主键生成策略就是通常所说的主键自增长,数据库在插入数据时,会自动给主键赋值,比如MySQL可以在创建表时声明"auto_increment" 来指定主键自增长。该策略在大部分数据库中都提供了支持(指定方法或关键字可能不同),但还是有少数数据库不支持,所以可移植性略差。使用自增长主键生成策略是只需要声明strategy = GenerationType.IDENTITY即可。

@Id  
@GeneratedValue(strategy = GenerationType.IDENTITY)

GenerationType.AUTO

把主键生成策略交给持久化引擎(persistence engine),持久化引擎会根据数据库在以上三种主键生成策略中选择其中一种。此种主键生成策略比较常用,由于JPA默认的生成策略就是GenerationType.AUTO,所以使用此种策略时.可以显式的指定@GeneratedValue(strategy = GenerationType.AUTO)也可以直接@GeneratedValue。

@Id  
@GeneratedValue(strategy = GenerationType.AUTO)
 

可见,默认的AUTO选择使用了TABLE策略来生成主键值,所以会在数据库里创建表hibernate_sequence,并在该表里存放值。由于我使用的数据库账号是只读权限,所以会报开始的错误。

解决办法就是:使用IDENTITY策略,或使用有写权限的数据库账号登录。

AD936x Evaluation Software 详细配置 作者:ShownSun 工作室:时沿科技 文章目录AD936x Evaluation Software详细配置1 系统概述2 AD9361 Wireless Transceiver Evaluation Setup2.1 标签描述2.2 用户参数2.3详细配置3 AD936x RF Wizard3.1 标签描述3.2 用户参数3.3 详细配置4 AD936x Digital Filter Wizard4.1 标签描述4.1.1 时钟配置4.1.2 滤波器配置4.1.3 接收滤波器配置4.1.4 发射滤.. 阅读详情

相关推荐

国产麒麟系统中的PaddleOCR离线绿色部署:高效安全的文字识别新纪元

摘要:本文详细介绍了PaddleOCR在银河麒麟V10SP1系统上的离线部署方案。通过Conda虚拟环境隔离依赖,采用离线包安装方式实现无网络部署,支持80+语言识别。重点讲解了模型量化剪枝优化、多线程处理等性能调优技巧,并提供了完整的OCR识别代码示例。该方案具有数据本地化处理的安全优势,适用于医疗票据数字化等对隐私要求严格的场景,同时解决了模型加载失败、内存不足等常见问题。

墨夶的博客 1227

org.hibernate.tool.schema.spi.CommandAcceptanceException Error executing DDL create table role

org.hibernate.tool.schema.spi.CommandAcceptanceException Error executing DDL create table role (id bigint not null auto_increment, describe varchar(255), rolename varchar(255), primary key (id)) engine=InnoDB via JDBC Statement

My_Java_yon的博客 2059

离线安装vue脚手架,内网安装@vue/cli

公司开发环境使用内网,无法用外网,搭建环境的时候,发现内网系统没有安装vue脚手架,我搜了很多文章,发现他们的方法对我都不适用,然后就自己摸索,最终皇天不负有心人,终于被我安装上了,一下是我内网离线安装vue/cli的方法,希望能帮助到有需要的小伙伴! 因为npm被集成在nodejs中,而安装nodejs只需要把nodejs安装包copy到内网电脑安装就行,比较简单,这里就不多做演示。 在外网电脑上,使用npm install -g xxxx命令下载好我们所需要的各个安装包,比如: npm insta

Liberty_yes的博客 1万+

H2数据库关键字导致org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL

h2创表问题

qq_43041751的博客 3061

Qupath软件的安装与使用

Qupath软件的安装与使用软件安装软件下载软件安装【windows版】简单使用文件打开人工标注标注导出和导入 Qupath是一款开源的医学图像标注软件,适合放射影像及数字病理切片等的查看。同时,其自带的标注功能使得医生可以直接通过该软件进行病变区域的标注和分类。跟进一步的,该软件提供groovy脚本运行接口,可供操作者编写和运行脚本,将标注信息转换为xml或者json格式的数据进行进一步的后序处...

qq_40662074的博客 3万+

FPGA实战:从零构建eMMC控制器(Verilog篇)

本文详细介绍了如何使用Verilog从零构建FPGA上的eMMC控制器,涵盖eMMC接口基础、命令系统解析、关键模块设计及性能优化技巧。通过实战案例,帮助开发者掌握高速数据存储解决方案,提升嵌入式系统开发能力。

weixin_26802933的博客 297

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL异常问题定位

原因:mysql不区分大小写,但是hibernate区分大小写造成的。

qq_42946963的博客 1万+

LuaJit分析(十一)去除string.dump函数

因此即使我们的指令顺序被打乱,通过loadfile系统调用,再通过string.dump调用,可以得到字节码文件,再通过与标准的luajit生成的字节码文件比对,即可找出差异所在。Lua脚本中的string.dump函数用于生成字节码文件,根据对 luajit -b命令的分析可以得出,最终dump出字节码文件都是使用的string.dump函数。同时lj_libdef.h和lj_ffdef.h这两个文件都是自动生成的,在msvcbuild.bat中,使用如下命令生成。

a545958498的博客 1131

【BUG日记】【Hibernate】Error executing DDL “create table hibernate_sequence (next_val bigint) type=MyISAM

【日期】: 2020/10/12 【问题】: Error executing DDL “create table hibernate_sequence (next_val bigint) type=MyISAM” via JDBC Statement. Error executing DDL “insert into hibernate_sequence values ( 1 )” via JDBC Statement 【原因】: Entity类中,定义的字段使用了注解:@GeneratedValu

南方者的博客 1216

21天教你学会PCIe专栏(17)--多功能设备

1.1 定义多功能PCIe设备:多功能PCIe设备是指在一个物理设备中集成了多种功能的设备。这些功能可以通过不同的PCIe功能(Function)来实现,每个功能可以独立配置和管理。1.2 优点资源利用率:通过集成多种功能,减少物理设备的数量,提高资源利用率。成本效益:减少硬件成本和功耗,提高系统的经济性。灵活性:用户可以根据需要启用或禁用不同的功能,提高系统的灵活性。可扩展性:通过增加新的功能,扩展设备的功能,提高系统的可扩展性。1.3 应用场景网络设备。

xiaoheshang_123的博客 531

AutoSAR从0开始实战 --- 目录

​​​​​​本专栏是全网最真实的AutoSAR实战专栏,博主将从一个0基础小白的身份来讲解AutoSAR工具的配置,以及相应代码的讲解。

wj博客 1727

SpringBoot MySQL #1 报错 Error executing DDL ...

连接 MySQL 数据库时,运行项目报错: Error executing DDL “create table hibernate_sequence (next_val bigint) type=MyISAM” via JDBC Statement… org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "create table hibernate_sequence (next_val bigint) t

FSYML 1178

YOLOv8改进 | Conv篇 | 轻量级下采样方法ContextGuided(大幅度涨点)

ContextGuided通过创新的局部-全局协同机制,解决了传统下采样方法中细节丢失与上下文缺失的核心痛点。实验证明其在YOLOv8上可实现最高2.6%的mAP提升,且计算开销增加不足5%。这种即插即用的设计为实时目标检测系统提供了新的优化方向。创新启示:轻量化不代表简单裁剪,智能信息融合才是未来方向!下一步探索与Transformer结合构建混合架构多尺度上下文融合机制3D点云中的扩展应用资源获取完整训练代码:[GitHub链接]预训练模型:[Google Drive链接]讨论话题。

QQ_778132974的博客 288

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL via JDBC Statement错误

错误详情org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToD

Tseward's blogs! 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "drop table if exists

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL “drop table if exists order” via JDBC Statement 在使用jpa建表的时候发现出现了这个异常。 原因是因为orde是mysql的关键字,所以不能执行成功。 ...

syr1136877833的博客 1999

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

hibernate表名称大写造成org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "

可能与很多小伙伴已经遇到过这个问题了,百度有很多解决说是数据库方言的问题,但还有可能造成该问题的是 (1)实体化类字段中使用了保留字,例如“describle” (2)实体化类@Table(name="modelInstance")表的名称使用了大写字母,正常小写时情况如下: 第一次运行程序创建table,打印语句如下:  第二次运行程序时不再执行创建语句 如果表命名为大写,你会发现第...

${王小贱}的博客 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Error executing DDL via JDBC Statement

项目环境:spring+jdk8+Hibernate+MySql jpa 生成数据库时 报错 Error executing DDL via JDBC Statement 解决方法: 修改配置文件applicationContext.xml或者hibernate.cfg.xml里hibernate.dialect的值 <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"&gt

小科比的博客 2222

JPA报 Error executing DDL

在使用springboot+jpa进行部署项目时候,mysql \oracle 自行切换 即可正常。

得已 966

解决springboot+jpa+hiberorg.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL和

https://blog.youkuaiyun.com/blog_zihao/article/details/78241109

zhengximian的博客 922

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL via JDBC Statement

spring boot 整合hibernate时报错 org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL via JDBC Statement Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You ha...

wshicainiao的博客 4775

spring boot jpa @Entity 报Error executing DDL错误的解决办法

错误如下: Error executing DDL "create table good (id bigint not null, cateid bigint, count bigint, createtime bigint, desc varchar(255), discount integer, imgurl varchar(255), name varchar(255), price bigint, saled bit, updatetime bigint, primary key (id)) eng

FE攻城狮 5224

Error executing DDL “drop table if exists 解决方案

这将会引用所有的数据库标识符,这样就可以在表名或列名中使用保留关键字了​。解决方案:在配置文件。

xeenj的博客 1276

【Hibernate】 报错:Error executing DDL “create table course (xxx)“

报错代码: Hibernate: create table course (id integer not null auto_increment, index integer, name varchar(255), primary key (id)) engine=InnoDB 十月 12, 2021 4:31:05 下午 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: Generatio

冷芝士鸭的学习笔记 2319

使用JPA运行项目时报错:Error executing DDL“********”

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "create table certificate (id varchar(255) not null auto_increment, awards varchar(255), create_time datetime(6), deleted bit not null, fraction integer, name varchar(255), pictu

weixin_44735825的博客 4391
上一篇: MySQL查看binlog日志
本木生
博客等级 码龄14年 18粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值