【发布时间】:2021-11-07 15:44:08
【问题描述】:
我正在我的 Spring Boot 应用程序中创建一个新的数据库表,但问题是尽管配置正确且没有日志错误消息,但该表并未在数据库中创建。这是我的模型类:
@Entity
@Table(name="user_avatar")
public class UserAvatar {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="user_avatar_id")
private String userAvatarId;
@OneToOne
@JoinColumn(name="user_id")
private User user;
@Column(name="random_string")
private String randomString;
@Column(name="style_options")
private String styleOptions;
@Column(name="avatar_type")
private String avatarType;
...
这是我的application.properties 文件:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://${DB_HOST}/${DB_NAME}?createDatabaseIfNotExist=true&autoReconnect=true&allowPublicKeyRetrieval=true&useSSL=false&useUnicode=yes&characterEncoding=UTF-8&characterSetResults=UTF-8
spring.datasource.username=${DB_USERNAME}
spring.datasource.password=${DB_PASSWORD}
spring.jpa.show-sql=true
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=create
server.tomcat.uri-encoding=UTF-8
spring.data.jpa.repositories.bootstrap-mode = default
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
spring.jpa.properties.hibernate.connection.characterEncoding=utf-8
spring.jpa.properties.hibernate.connection.CharSet=utf-8
spring.jpa.properties.hibernate.connection.useUnicode=true
还有我的控制台日志,缩短以显示 Hibernate create 查询:
Hibernate: create table student_storybook (student_storybook_id integer not null auto_increment, is_quiz_completed tinyint(1) default 0, is_story_completed tinyint(1) default 0, by_student_id integer, for_storybook_id integer, in_progress_quiz_session integer, in_progress_story_session integer, primary key (student_storybook_id)) engine=InnoDB
2021-09-11 09:43:20.561 DEBUG 5684 --- [ main] org.hibernate.SQL : create table teacher (teacher_id integer not null auto_increment, name varchar(255), user_id integer, primary key (teacher_id)) engine=InnoDB
Hibernate: create table teacher (teacher_id integer not null auto_increment, name varchar(255), user_id integer, primary key (teacher_id)) engine=InnoDB
2021-09-11 09:43:20.575 DEBUG 5684 --- [ main] org.hibernate.SQL : create table user (id integer not null auto_increment, avatar_data TEXT, avatar_type integer, email varchar(255), gender varchar(255), password varchar(255), reset_password_token varchar(255), role varchar(255), username varchar(255), user_avatar_id integer, primary key (id)) engine=InnoDB
Hibernate: create table user (id integer not null auto_increment, avatar_data TEXT, avatar_type integer, email varchar(255), gender varchar(255), password varchar(255), reset_password_token varchar(255), role varchar(255), username varchar(255), user_avatar_id integer, primary key (id)) engine=InnoDB
2021-09-11 09:43:20.595 DEBUG 5684 --- [ main] org.hibernate.SQL : create table user_avatar (user_avatar_id varchar(255) not null auto_increment, avatar_type varchar(255), random_string varchar(255), style_options varchar(255), user_id integer, primary key (user_avatar_id)) engine=InnoDB
Hibernate: create table user_avatar (user_avatar_id varchar(255) not null auto_increment, avatar_type varchar(255), random_string varchar(255), style_options varchar(255), user_id integer, primary key (user_avatar_id)) engine=InnoDB
正如您在此处看到的,尽管正在执行 Hibernate create 查询,但未在数据库中创建所需的 user_avatar 表:
为什么会这样以及如何解决这个问题?
【问题讨论】:
标签: java mysql spring-boot hibernate create-table