質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

2319閲覧

springbootで、schema.sqlファイル通りテーブルを作成してくれない。

a1209s518n928

総合スコア15

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

1クリップ

投稿2018/05/03 16:24

springboot(sts)を使用してプログラミングをしています。
そこで、起動時に自動でテーブルを作成できるようにdata.sqlファイルを用意して作成しているのですが、data.sqlファイルで指定しているテーブル定義と実際に作成されるテーブル定義が異なって作成されてしまいます。なぜでしょうか?また解決方法をお教えください。

  • ディレクトリ構成

イメージ説明

  • コード詳細

[Item.java]

java

1package com.example.demo.domain; 2 3import java.io.Serializable; 4 5import javax.persistence.Column; 6import javax.persistence.Entity; 7import javax.persistence.GeneratedValue; 8import javax.persistence.GenerationType; 9import javax.persistence.Id; 10import javax.persistence.Table; 11 12import lombok.AllArgsConstructor; 13import lombok.Data; 14import lombok.NoArgsConstructor; 15 16@Entity 17@Table(name = "items") 18@Data 19@NoArgsConstructor 20@AllArgsConstructor 21public class Item implements Serializable{ 22 @Id 23 @GeneratedValue(strategy = GenerationType.IDENTITY) 24 private Integer id; 25 private byte[] img; 26 private String title; 27 private String description; 28 private long price; 29}

[application.properties]

server.port=9003 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/testAPI?characterEncoding=UTF8&useSSL=false spring.datasource.username=root spring.datasource.password=7777 spring.jpa.hibernate.ddl-auto=update

[data.sql]

create table if not exists items( id int auto_increment primary key, img blob, title varchar(100), price bigint, description varchar(500));
  • 実際のテーブル定義

+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| description | varchar(255) | YES | | NULL | |
| img | tinyblob | YES | | NULL | |
| price | bigint(20) | NO | | NULL | |
| title | varchar(255) | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+

  • 実現したいテーブル定義

+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| img | blob | YES | | NULL | |
| title | varchar(100) | YES | | NULL | |
| price | bigint(20) | YES | | NULL | |
| description | varchar(500) | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/05/03 16:26

create,create-dorop,update とかなってるのを none にするだけのやつか・・・
guest

回答1

0

ベストアンサー

diff

1- spring.jpa.hibernate.ddl-auto=update 2+ spring.jpa.hibernate.ddl-auto=none

以上で hibanate の自動生成で壊されなくなると思うが

投稿2018/05/03 16:27

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

a1209s518n928

2018/05/04 03:50

回答ありがとうございます。 すでにあるテーブルの定義が変わってしまうのではなく、まだ一つもテーブルがない状態で新しくテーブルを作成する場合に、data.sqlの定義通りに作成されず、上記の「・実際のテーブル定義」のようにテーブルが定義されて作成されてしまいます。
退会済みユーザー

退会済みユーザー

2018/05/04 03:52

いや hibernate が壊れた(アルファベット順)形式で先に作るので create table if not exists で SQLファイル側では作成されないのですよ
a1209s518n928

2018/05/04 04:14

早々に回答ありがとうございます。 仰る通りに記述しましたところ、テーブル自体が作成されなくなってしまいました。
退会済みユーザー

退会済みユーザー

2018/05/04 08:36

spring.datasource.initialization-mode の設定を上記リンク先の指示のとおりにに指定してください
a1209s518n928

2018/05/04 16:45

コメント通り設定を行ったらできました! 本当に本当に、ありがとうございました! とても感謝しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問