Я создаю приложение 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, но на самом деле я не знаю, как это исправить.

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

Спасибо.

3
Florian Hansen 3 Окт 2019 в 19:25

1 ответ

Лучший ответ

Я нашел обходной путь для этого. В моем 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}

1
Florian Hansen 4 Окт 2019 в 08:17