Olá Fabiano,
Entendo que você está enfrentando um problema ao tentar criar uma tabela no MySQL usando Flyway, devido ao uso de um campo do tipo TEXT
com uma restrição de unique
. No MySQL, colunas do tipo BLOB
ou TEXT
não podem ser usadas diretamente em índices ou chaves únicas sem especificar um comprimento.
Para resolver esse problema, você pode alterar a definição da coluna mensagem
para um tipo que permita a restrição de unique
, como VARCHAR
com um comprimento adequado. Por exemplo, você pode definir a coluna mensagem
como VARCHAR(255)
se isso for suficiente para os dados que você planeja armazenar. Aqui está um exemplo de como você pode modificar seu script SQL:
CREATE TABLE topicos (
id BIGINT auto_increment NOT NULL,
titulo varchar(100) NOT NULL unique,
mensagem VARCHAR(255) unique,
data datetime not null,
status varchar(20) NOT NULL,
curso_id bigint not null,
autor_id bigint not null,
primary key(id),
CONSTRAINT fk_topicos_cursos_id FOREIGN KEY (curso_id) REFERENCES cursos(id),
CONSTRAINT fk_topicos_usuarios_id FOREIGN KEY (autor_id) REFERENCES usuarios(id)
);
Se você realmente precisa que a coluna mensagem
seja do tipo TEXT
, você pode remover a restrição unique
dessa coluna, já que o MySQL não permite isso diretamente. Nesse caso, você pode considerar outras formas de garantir a unicidade dos dados dessa coluna na aplicação, em vez de no banco de dados.
Espero ter ajudado e bons estudos!