Hibernate não está criando as tabelas

7 respostas
R

No arquivo .cfg tenho configurado:

Os comandos de INSERT, UPDATE, DELETE são executados. Porém, o CREATE TABLE não.
O mesmo arquivo e programa funciona em outro computador.

O problema pode estar acontecendo porque nesse computador o MySQL não está configurado para rodar por linha de comando? (As variáveis do ambiente não foram configuradas manualmente)

7 Respostas

Elias_Crazy

cara

verifica se o usuário que a aplicacao conecta no bd tem permissão de criar as tabelas, se elas já não existem em outro squema do banco, pode testar também se executar a criação via query de alguma tabela funciona…

R

Fiz o seguinte teste:

Usando a propriedade como update e com o banco de dados já criado. Consigo inserir/pesquisar/excluir registros.
Com a propriedade create ele exclui tudo o que tem, mas não consegui criar as tabelas.

O usuário tem permissão para criar tabelas.

hvivox

Olá paceiro,

normalmente costumo utilizar o hibernate tools para gerar as tabelas, mas para isso é necessário que vc tenha as classes de persistencias devidamente mapeadas através de xml ou anotações.

verifica se isso foi feito, caso contrário vc terá que postar seu codigo

hvivox

então, vc resolveu o problema

R

Resolvido!

Ativei o DEBUG do Hibernate.
Verifiquei que as tabelas não estavam sendo criadas, pois a sintaxe do SQL gerada pelo Hibernate estava “errada”.

O computador que estava funcionando roda a versão 5.1 do MySQL que é compatível com o dialect org.hibernate.dialect.MySQLInnoDBDialect

Já os outros computadores rodam a versão 5.5 do MySQL. (versão que não usa mais a especificação da engine=InnoDB no final da criação do CREATE TABLE)

Solução: Mudar o dialect do Hibernate
org.hibernate.dialect.MySQL5InnoDBDialect

drsmachado

RafaelViana:
Resolvido!

Ativei o DEBUG do Hibernate.
Verifiquei que as tabelas não estavam sendo criadas, pois a sintaxe do SQL gerada pelo Hibernate estava “errada”.

O computador que estava funcionando roda a versão 5.1 do MySQL que é compatível com o dialect org.hibernate.dialect.MySQLInnoDBDialect

Já os outros computadores rodam a versão 5.5 do MySQL. (versão que não usa mais a especificação da engine=InnoDB no final da criação do CREATE TABLE)

Solução: Mudar o dialect do Hibernate
org.hibernate.dialect.MySQL5InnoDBDialect


Solução: Mudar o dialect do Hibernate
De: org.hibernate.dialect.MySQL5InnoDBDialect
Para: org.hibernate.dialect.MySQLDialect

Também funciona

hibernate.dialect = org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class = com.mysql.jdbc.Driver
hibernate.connection.url = jdbc:mysql://localhost/anuncios
hibernate.connection.username = root
hibernate.connection.password = root
hibernate.show_sql = true
hibernate.format_sql = true
macbird

drsmachado:
RafaelViana:
Resolvido!

Ativei o DEBUG do Hibernate.
Verifiquei que as tabelas não estavam sendo criadas, pois a sintaxe do SQL gerada pelo Hibernate estava “errada”.

O computador que estava funcionando roda a versão 5.1 do MySQL que é compatível com o dialect org.hibernate.dialect.MySQLInnoDBDialect

Já os outros computadores rodam a versão 5.5 do MySQL. (versão que não usa mais a especificação da engine=InnoDB no final da criação do CREATE TABLE)

Solução: Mudar o dialect do Hibernate
org.hibernate.dialect.MySQL5InnoDBDialect


Solução: Mudar o dialect do Hibernate
De: org.hibernate.dialect.MySQL5InnoDBDialect
Para: org.hibernate.dialect.MySQLDialect

Também funciona

hibernate.dialect = org.hibernate.dialect.MySQLDialect hibernate.connection.driver_class = com.mysql.jdbc.Driver hibernate.connection.url = jdbc:mysql://localhost/anuncios hibernate.connection.username = root hibernate.connection.password = root hibernate.show_sql = true hibernate.format_sql = true

Mas como você fez com os relacionamentos do banco de dados, se o banco de dados não for InnobDB ele não cria relacionamentos…

Criado 2 de agosto de 2011
Ultima resposta 5 de mar. de 2013
Respostas 7
Participantes 5