Spring Boot & Hibernate: MySQL TEXT с локальным h2 и Flyway - PullRequest
2 голосов
/ 03 октября 2019

Я создаю приложение Spring Boot, которое содержит несколько длинных текстов в своих сущностях.

Чтобы обеспечить хорошую обработку миграций базы данных, я включил Flyway. В производстве я использую базу данных MySQL, для локального тестирования я хочу реализовать базу данных h2 по умолчанию.

У объекта может быть следующее свойство

@Column(columnDefinition = "TEXT")
val startText: String?

Для моей базы данных MySQL этоработает нормально и выглядит так в моей схеме пролетного пути:

start_text TEXT,

Когда я сейчас начинаю свои тесты с базой данных h2 в памяти по умолчанию в Spring, я получаю следующую ошибку:

Schema-validation: wrong column type encountered in column [start_text] in table [t_table]; found [clob (Types#CLOB)], but expecting [text (Types#VARCHAR)]

Я понимаю, что h2 не поддерживает специфичный для MySQL тип TEXT, но на самом деле я понятия не имею, как это исправить.

Любая помощь приветствуется.

Спасибо.

1 Ответ

1 голос
/ 04 октября 2019

Я нашел обходной путь для этого. В моем application.yaml у меня есть следующее:

spring:
  flyway:
    placeholders:
      text-datatype: 'TEXT' #defines a placeholder that is available in flyway

В моем application.yaml в моей тестовой папке есть следующее

spring:
  flyway:
    placeholders:
      text-datatype: 'VARCHAR(255)'

Теперь я могу использовать заполнитель в моем Flywayскрипты и все отлично работает:

start_text ${text-datatype}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...