# Ripristino database da backup e impossibilita' ad utilizzare le migrations

**URL:** <https://www.ruby-forum.com/t/ripristino-database-da-backup-e-impossibilita-ad-utilizzare-le-migrations/166660>\
**Category:** IT\
**Created:** [April 28, 2009, 10:34am UTC](https://www.ruby-forum.com/t/ripristino-database-da-backup-e-impossibilita-ad-utilizzare-le-migrations/166660 "2009-04-28T10:34:33Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [April 28, 2009, 10:34am UTC](https://www.ruby-forum.com/t/ripristino-database-da-backup-e-impossibilita-ad-utilizzare-le-migrations/166660/1 "2009-04-28T10:34:33Z")

</div>

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’?

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [April 28, 2009, 10:43am UTC](https://www.ruby-forum.com/t/ripristino-database-da-backup-e-impossibilita-ad-utilizzare-le-migrations/166660/2 "2009-04-28T10:43:57Z")

</div>

2009/4/28 Mauro [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> 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

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [April 28, 2009, 11:04am UTC](https://www.ruby-forum.com/t/ripristino-database-da-backup-e-impossibilita-ad-utilizzare-le-migrations/166660/3 "2009-04-28T11:04:26Z")

</div>

2009/4/28 Luca M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> 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.

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [April 30, 2009, 8:42am UTC](https://www.ruby-forum.com/t/ripristino-database-da-backup-e-impossibilita-ad-utilizzare-le-migrations/166660/4 "2009-04-30T08:42:31Z")

</div>

Msan M. wrote:

> 2009/4/28 Luca M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):
> 
> > 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

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [April 30, 2009, 9:43am UTC](https://www.ruby-forum.com/t/ripristino-database-da-backup-e-impossibilita-ad-utilizzare-le-migrations/166660/5 "2009-04-30T09:43:53Z")

</div>

2009/4/30 Paolo M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> > 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.

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [April 30, 2009, 9:51am UTC](https://www.ruby-forum.com/t/ripristino-database-da-backup-e-impossibilita-ad-utilizzare-le-migrations/166660/6 "2009-04-30T09:51:32Z")

</div>

2009/4/30 Mauro [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> 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

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [April 30, 2009, 12:25pm UTC](https://www.ruby-forum.com/t/ripristino-database-da-backup-e-impossibilita-ad-utilizzare-le-migrations/166660/7 "2009-04-30T12:25:44Z")

</div>

2009/4/30 Mauro [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> > > 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.

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [April 30, 2009, 11:51am UTC](https://www.ruby-forum.com/t/ripristino-database-da-backup-e-impossibilita-ad-utilizzare-le-migrations/166660/8 "2009-04-30T11:51:10Z")

</div>

2009/4/30 Luca M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> > 
> 
> “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?
