Невозможно запустить сценарии flyway из приложения Spring Boot с базой данных Mysql в контейнере Docker - PullRequest
0 голосов
/ 31 мая 2018

У меня есть приложение весенней загрузки, в котором так много скриптов flyway.Эти сценарии будут запускаться автоматически, как только загрузится загрузочное приложение.они работают правильно без докера.когда я помещаю это приложение в докер-контейнер*

my application-mysql.yml Выглядит как

spring:
  jpa:
     database:mysql
     database-platform:org.hibernate.dialect.MySQL5Dialect
  datasource:
      url:jdbc:mysql://mysql-docker-container:3306/synfioo_poc?useSSL=false
      username:app_user
      password:test123
      driver-class-name:com.mysql.jdbc.Driver

После сборки Docker я связываю свой Spring Boot с Mysql Db следующим образомПредположим, что я правильно создал образ mysql и он может создать таблицу из клиента mysql, но сценарии flyway не запускаются из java-программы, а также правильно создали файл docker

docker run -t --name synfioo-poc-container --link  mysql-docker-container:mysql -p 8080:8080  docker-synfioo-core:latest

Исключение:

2018-05-31 13:28:45.746  INFO 1 --- [           main] o.f.core.internal.util.VersionPrinter    : Flyway 3.2.1 by Boxfuse
2018-05-31 13:28:46.783  INFO 1 --- [           main] o.f.c.i.dbsupport.DbSupportFactory       : Database: jdbc:h2:mem:testdb (H2 1.4)
2018-05-31 13:28:47.457  INFO 1 --- [           main] o.f.core.internal.command.DbValidate     : Validated 18 migrations (execution time 00:00.506s)
2018-05-31 13:28:47.502  INFO 1 --- [           main] o.f.c.i.metadatatable.MetaDataTableImpl  : Creating Metadata table: "PUBLIC"."schema_version"
2018-05-31 13:28:47.609  INFO 1 --- [           main] o.f.core.internal.command.DbMigrate      : Current version of schema "PUBLIC": << Empty Schema >>
2018-05-31 13:28:47.615  INFO 1 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 0001 - R001 Create schema
2018-05-31 13:28:47.638 ERROR 1 --- [           main] o.f.core.internal.command.DbMigrate      : Migration of schema "PUBLIC" to version 0001 failed! Please restore back
ups and roll back database and code!
2018-05-31 13:28:47.670  WARN 1 --- [           main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh
 attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'beansBatchConfig': Unsatisfied dependency expressed through me
thod 'setTransactionManager' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager'
 defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Initialization of bean failed; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoc
onfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.internal.dbsupport.FlywaySqlScriptException:
Migration V0001__R001_Create_schema.sql failed
----------------------------------------------
SQL State  : 90079
Error Code : 90079
Message    : Schema "SYNFIOO_POC" not found; SQL statement:
CREATE TABLE synfioo_poc.Binary_Object (
  id BIGINT NOT NULL AUTO_INCREMENT,
  modification_counter INTEGER NOT NULL,
  data BLOB(2147483647),
  size BIGINT NOT NULL,
  mime_Type VARCHAR(255),
  PRIMARY KEY (ID)
) [90079-193]
Location   : db/migration/mysql/V0001__R001_Create_schema.sql (/file:/synfioo-core-0.0.1-SNAPSHOT.jar!/db/migration/mysql/V0001__R001_Create_schema.sq
Line       : 8
Statement  : CREATE TABLE synfioo_poc.Binary_Object (
  id BIGINT NOT NULL AUTO_INCREMENT,
  modification_counter INTEGER NOT NULL,
  data BLOB(2147483647),
  size BIGINT NOT NULL,
  mime_Type VARCHAR(255),
  PRIMARY KEY (ID)
)

Может ли кто-нибудь помочь в этом вопросе.

1 Ответ

0 голосов
/ 03 июня 2018
Message    : Schema "SYNFIOO_POC" not found; SQL statement:
CREATE TABLE synfioo_poc.Binary_Object (
...

Похоже, что схема / база данных synfioo_poc, на которую ссылается V0001__R001_Create_schema.sql, не существует в экземпляре mysql-docker-container.

Попробуйте добавить createDatabaseIfNotExist=true в URL-адрес jdbc для mysql для автоматического созданияэто при необходимости:

url:jdbc:mysql://mysql-docker-container:3306/synfioo_poc?useSSL=false&createDatabaseIfNotExist=true
...