如何解决Spring Boot Error通过JDBC语句执行DDL
因此,我想制作一个简单的CRUD应用程序,并且将MysqL Workbench用于数据库。 我在MysqL Workbench中的连接
Hostname : 127.0.0.1
Port : 3306
我不在MysqL Workbench中使用密码。
现在我的应用程序属性如下所示:
spring.datasource.url=jdbc:MysqL://localhost:3306/employee_management_system?useSSL=false
spring.datasource.username=root
spring.datasource.password=
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MysqLInnoDBDialect
spring.jpa.hibernate.ddl-auto=update
我得到的错误
org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "create table employees (id bigint not null auto_increment,email_id varchar(255),first_name varchar(255),last_name varchar(255),primary key (id)) type=InnoDB" via JDBC Statement
Caused by: java.sql.sqlSyntaxErrorException: You have an error in your sql Syntax; check the manual that corresponds to your MariaDB server version for the right Syntax to use near 'type=InnoDB' at line 1
请有人帮忙吗?
解决方法
我认为您的数据库不支持InnoDB引擎。 尝试更换
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQLInnoDBDialect
作者
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
,
改为使用此查询:
create table employees
(
id bigint not null auto_increment,email_id varchar(255),first_name varchar(255),last_name varchar(255),primary key (id)
)
engine=InnoDB;
以供参考:Using "TYPE = InnoDB" in MySQL throws exception
,就我而言,我需要通过将这两行添加到我的 application.properties 文件中来检查它生成的 sql
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
然后我才能够复制 sql,将其粘贴到控制台编辑器中,并获得更详细的错误描述。在那里它抱怨我试图用保留字命名我的桌子。我改变了它,它起作用了(我使用的是 postgres)。
,问题是您现在尝试访问不存在的数据库或默认的“information_schema”,该用户不允许在其上创建表,所以很简单
创建一个新的数据库:
create database example;
创建一个新用户来处理这个数据库,或者你可以使用 root 访问,但新用户最好不要在任何地方都使用 root 用户
create user 'exampleuser'@'%' identified by 'PASSWORD;
然后分配用户对该数据库的所有权限
grant all on example.* to 'exampleuser'@'%';
最后,确保你更新了你的 spring 配置
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/example
spring.datasource.username=exampleuser
spring.datasource.password=12345
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。