Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Com flyway como crir migration com cmpo do tipo TEXT

Error Code : 1170 Message : BLOB/TEXT column 'mensagem' used in key specification without a key length Location : db/migration/V5__create-table-topicos.sql (C:\Alura\Java\Desafios\api\target\classes\db\migration\V5__create-table-topicos.sql) Line : 1 Statement : CREATE TABLE topicos ( id BIGINT auto_increment NOT NULL, titulo varchar(100) NOT NULL unique, mensagem TEXT 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)

)

2 respostas
solução!

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!

Rodrigo, obrigado pela informação. Com pesquisa e lendo uns foruns encontrei a solução . Justamento o que falou.

Grato , t+...