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

E

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.

H

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

H

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

D

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
M

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