Problema di aggiornamento dello schema di ibernazione
-
28-10-2019 - |
Domanda
Ho aggiunto un campo stringa alla mia classe persistente di ibernazione e ho riavviato l'applicazione.Ha avviato SchemaUpgrade e ha prodotto diversi errori come questo:
2011-02-03 13:04:06,522 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaUpdate - Unsuccessful: alter table table_name add index FKCD10932052C35B33 (previewExample_id), add constraint FKCD10932052C35B33 foreign key (previewExample_id) references preview (id)
2011-02-03 13:04:06,522 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaUpdate - Can't create table 'dbName.#sql-59c_1cc' (errno: 150)
La colonna è stata però aggiunta al database.E tutto sembra funzionare bene.A parte quegli errori, che saltano fuori ogni volta, avvio l'applicazione.
Cosa posso fare per aiutarlo a creare questi indici?DB è MySQL, la versione di ibernazione è 3.0.
Soluzione
Non sembra un problema di ibernazione.Se provi a eseguire manualmente, vedrai che avrai lo stesso problema.Guardando i manuali MySQL, vedo che "errno: 150" significa:
Se si ricrea una tabella che è stata eliminata, deve avere una definizione conforme ai vincoli di chiave esterna che fanno riferimento ad essa.Deve avere i nomi e i tipi di colonna di destra e deve avere indici sulle chiavi di riferimento, come affermato in precedenza.Se questi non sono soddisfatti, MySQL restituisce il numero di errore 1005 e fa riferimento all'errore 150 nel messaggio di errore.
http://dev.mysql.com / doc / refman / 5.5 / en / innodb-foreign-key-constraints.html
Altri suggerimenti
Assicurati anche che TABLE_COLLATION tra le colonne referenziate e referent siano le stesse ... altrimenti ottieni anche quell'errore.
Per me il problema è stato risolto cambiando tutte le tabelle Engine in InnoDB.
Ecco come farlo manualmente: