Ho fatto un ripristino di un database da un file di backup.
Tale ripristino mi ha ovviamente creato tutte le tabelle all’interno
del database con i dati associati.
A questo punto pero’ mi e’ impossibile utilizzare le migrations.
Ho aggiunto una nuova migration perche’ ho la necessita’ di aggiungere
una tabella al database.
Lancio db:migrate ma mi dice che alcune relazioni esistono gia’, sono
le migration relative alle precedenti tabelle, e quindi il rake non va
a buon fine.
C’e’ una soluzione a cio’?
2009/4/28 Mauro [email protected]:
Lancio db:migrate ma mi dice che alcune relazioni esistono gia’, sono
le migration relative alle precedenti tabelle, e quindi il rake non va
a buon fine.
questo non mi torna, come hai fatto il backup? usavi le migrations
anche prima di fare il backup/ripristino (i.e. le hai usate anche per
migrare l database alla versione dello schema di cui hai il backup)?
se hai salvato tutte le tabelle dovreste averti salvato anche la
tabella schema_migrations (se rails >= 2.1, altrimenti la tabella
schema_info) che contiene i dati necessari alle migration per sapere
quelle gia eseguite e quelle ancora da eseguire.
Luca
2009/4/28 Luca M. [email protected]:
tabella schema_migrations (se rails >= 2.1, altrimenti la tabella
schema_info) che contiene i dati necessari alle migration per sapere
quelle gia eseguite e quelle ancora da eseguire.
Quello che ho fatto e’ stato: creazione del database di development
con relative migrations, tutto ok.
Creazione del database in ambiente di produzione e relative
migrations, tutto ok.
Backup del database di produzione.
Drop del database di development, creazione a mano del database vuoto
e ripristino da backup del database di produzione.
Msan M. wrote:
2009/4/28 Luca M. [email protected]:
tabella schema_migrations (se rails >= 2.1, altrimenti la tabella
schema_info) che contiene i dati necessari alle migration per sapere
quelle gia eseguite e quelle ancora da eseguire.Quello che ho fatto e’ stato: creazione del database di development
con relative migrations, tutto ok.
Creazione del database in a mbiente di produzione e relative
migrations, tutto ok.
Backup del database di produzione.
Drop del database di development, creazione a mano del database vuoto
e ripristino da backup del database di produzione.
Apparentemente rake db:migrations sta eseguendo delle migrazioni che non
dovrebbe fare. Rails usa una tabella per tenere traccia di dove è
arrivato con le migrazioni e l’errore che hai pare indicare che i valori
di quella tabella non sono corretti.
Come scriveva Luca: se hai Rails < 2.1 controlla che in schema_info ci
sia un record (uno solo) con il numero dell’ultima migrazione (quella
precedente la migrazione che ora vuoi eseguire). Se hai Rails >= 2.1
devi invece controllare che in schema_migrations ci sia un record per
ogni migrazione (100 migrazioni = 100 record, è diverso da quel che fa
schema_info).
E’ anche possibile che il db fosse stato fatto con Rails < 2.1 ed ora tu
lo stia facendo andare con Rails >= 2.1? Se così fosse hai i valori
corretti in schema_info ma Rails ora guarda schema_migrations e prova a
ricrearti il db da zero partendo dalla prima migrazione.
Se invece la versione di Rails ed i contenuti delle tabelle schema_*
sono ok, allora sì che abbiamo un bel puzzle…
Paolo
2009/4/30 Paolo M. [email protected]:
Backup del database di produzione.
devi invece controllare che in schema_migrations ci sia un record per
ogni migrazione (100 migrazioni = 100 record, è diverso da quel che fa
schema_info).E’ anche possibile che il db fosse stato fatto con Rails < 2.1 ed ora tu
lo stia facendo andare con Rails >= 2.1? Se così fosse hai i valori
corretti in schema_info ma Rails ora guarda schema_migrations e prova a
ricrearti il db da zero partendo dalla prima migrazione.Se invece la versione di Rails ed i contenuti delle tabelle schema_*
sono ok, allora sì che abbiamo un bel puzzle…
Uso Rails 2.3.
La tabella schema_migrations contiene:
“20090129170823”
“20090129170853”
“20090129171049”
“20090129171952”
le migrations sono:
20090407193416_create_sectors.rb
20090407193536_create_categories.rb
20090407193930_create_suppliers.rb
20090407194832_create_categories_suppliers.rb
Successivamente ho aggiunto:
20090428080613_create_users.rb
L’errore e’ che tenta di ricreare le tabelle precedenti ma esistendo
gia’ da errore.
Ho risolto cancellando le prime 4 migrations dal progetto anche se non
penso sia il modo corretto di operare.
2009/4/30 Mauro [email protected]:
20090407193416_create_sectors.rb
20090407193536_create_categories.rb
20090407193930_create_suppliers.rb
20090407194832_create_categories_suppliers.rb
se avessi usato queste migrations per creare il database avresti
dovuto avere questo nella tabella schema_migrations:
“20090407193416”
“20090407193536”
“20090407193930”
“20090407194832”
hai per caso cancellato e ricreato le migrations? Dalle date pare che
quelle originali risalissero al 29 gennaio mentre quelle attuali sono
del 7 aprile…
Luca
2009/4/30 Mauro [email protected]:
le migrations sono:
“20090407193536”
Ho risolto rinominando le migrations che mi davano problemi mettendo
nei nomi files le stesse date indicate nella tabella
schema_migrations.
2009/4/30 Luca M. [email protected]:
“20090407193930”
“20090407194832”hai per caso cancellato e ricreato le migrations? Dalle date pare che
quelle originali risalissero al 29 gennaio mentre quelle attuali sono
del 7 aprile…
Probabile, non mi ricordo.
L’unica soluzione, nel caso volessi aggiungere o modificare delle
tabelle sarebbe quella di cancellare le vecchie migrations?