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

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

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

Spring MVCとは、Javaを用いてWebアプリケーションを開発できるフレームワーク。アーキテクチャにMVCを採用しており、画面遷移と入出力パラメータの受け渡しの基本的な機能の他、ユーザーの送信したパラメータに対する入力チェックなどさまざまな機能を持ちます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

Spring Boot

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

Q&A

解決済

1回答

4521閲覧

spring boot起動時にschema.sqlが実行されないのでアドバイスいただきたいです。。

dsf_sd23

総合スコア1

Spring MVC

Spring MVCとは、Javaを用いてWebアプリケーションを開発できるフレームワーク。アーキテクチャにMVCを採用しており、画面遷移と入出力パラメータの受け渡しの基本的な機能の他、ユーザーの送信したパラメータに対する入力チェックなどさまざまな機能を持ちます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

Spring Boot

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

0グッド

0クリップ

投稿2022/06/11 13:54

spring boot起動時にschema.sqlが実行されないのでアドバイスいただきたいです。。

ファイルの内容

application.properties

1spring.datasource.url=jdbc:mysql://localhost:3306/task 2spring.datasource.username=root 3spring.datasource.password= 4spring.thymeleaf.prefix=file:src/main/resources/templates/ 5spring.mvc.hiddenmethod.filter.enabled=true 6spring.jpa.hibernate.ddl-auto=none 7spring.datasource.initialization-mode=always 8spring.datasource.sql-script-encoding=UTF-8

schema.sql

1create database if not exists task;

エラー内容

Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set

試したこと


spring.datasource.initialization-mode=alwaysspring.sql.init.enabled=trueに変えて実行してみる
参考
https://qiita.com/t-yama-3/items/9574f34ccc18de30d625

結果
上記エラー内容と変わらず、schema.sqlが実行されない



spring.sql.init.mode=alwaysをapplication.propertieisに追加してみる
参考
https://zenn.dev/rajiku/articles/b70999251195d9

結果
上記エラーに加えて以下のエラーが追加される

Caused by: org.springframework.jdbc.datasource.init.UncategorizedScriptException: Failed to execute database script; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLSyntaxErrorException: Unknown database 'task'

結果
schema.sqlは実行されてない



spring.datasource.schema=classpath:schema.sqlを追加してみる
参考
https://qiita.com/niwasawa/items/af6c5485c1c71d55d7dd

結果
上記エラー内容と変わらず、schema.sqlが実行されない

ちなみに

当たり前かとは思いますが、手動でmysqlに入ってテーブル等を作成すれば
問題なく、実行できています。

もし、わかる方がいらっしゃったら、アドバイスいただけたら幸いです。
あと、足りない情報等もございましたら、ご指摘ください。

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

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

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

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

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

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

neko_the_shadow

2022/06/12 13:18

spring.datasource.url=jdbc:mysql://localhost:3306/task このURLを見る限りですと、taskというデータベースに接続しようとしていますが、そもそもtaskというデータベースはそもそも存在しますか?
dsf_sd23

2022/06/12 13:49

質問ありがとうございます! いえ、存在してないです。 なので、手動でmysqlに入ってデータベース、テーブル等を作成すれば 問題なく、実行できています。 しかし、自分の想定では、 1 sprin bootが起動する 2 schema.sqlが実行される 3 2によって、mysqlにtask データベースが作成される と思っていたので、 そもそも認識が間違っているのでしょうか。。?
dsf_sd23

2022/06/12 13:53

つまりやりたいこととしては 手動で、mysqlでデータベースを作成しなくても schema.sql起動時にschema.sqlが実行されて、データベース、テーブルが作成され 作成されたtaskデータベースに接続された状態で起動がされる ってことができるのかなって思って色々調べてたら、 spring bootは起動時に、schema.sqlやdata.sqlを特定のディレクトリ配下に置いとくと それを実行することができるというのを知ったので、今回試したらうまくいかず、 質問させていただいた、という経由です
neko_the_shadow

2022/06/13 05:25

schema.sqlはspring.datasource.urlを参照していますが、このurlが存在しないDBを指定しているという状態です。DBは別の手段で先に作る必要があると思います。
dsf_sd23

2022/06/13 07:06

なるほどです、ありがとうございます! shcma.sqlは、create databaseとかやるとdatabaseも起動時に作成してくれるのかなって勘違いしていたけど、 そもそもschema.sqlはspring.datasource.urlを参照をするから、それ以前の問題でしたね。。 色々と整理できました、ありがとうございました!
guest

回答1

0

ベストアンサー

spring bootが起動するタイミングでDBへ接続する(今回の場合task)為、
存在しないDBに接続する事は不可能です。

投稿2022/06/13 00:19

Luice

総合スコア771

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

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

dsf_sd23

2022/06/13 05:16

ご回答ありがとうございます! なるほどです。。 確かに、先にmysqlにてtask databaseを作成した後、schma.sqlが実行できることは確認できました。 というかそもそもschema.sqlでデータベースを作成するものだと勘違いしておりました。。 shema.sqlはテーブル構造とかを定義して、data.sqlで実際に初期データをinsertしたりするのですね ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問