Forum: Italian Ruby user group ripristino database da backup e impossibilita' ad utilizzare le migrations.

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
B0f6d8efcf671ea3163449e231264cc4?d=identicon&s=25 Msan Msan (msan)
on 2009-04-28 10:34
(Received via mailing list)
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'?
05720447a341aaffb8827039df3931df?d=identicon&s=25 Luca Mearelli (Guest)
on 2009-04-28 10:43
(Received via mailing list)
2009/4/28 Mauro <mrsanna1@gmail.com>:
> 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
B0f6d8efcf671ea3163449e231264cc4?d=identicon&s=25 Msan Msan (msan)
on 2009-04-28 11:04
(Received via mailing list)
2009/4/28 Luca Mearelli <luca.mearelli@gmail.com>:
> 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.
7de465f222e6a9c7fe658e370d0bfe05?d=identicon&s=25 Paolo Montrasio (pmontrasio)
on 2009-04-30 08:42
Msan Msan wrote:
> 2009/4/28 Luca Mearelli <luca.mearelli@gmail.com>:
>> 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
B0f6d8efcf671ea3163449e231264cc4?d=identicon&s=25 Msan Msan (msan)
on 2009-04-30 09:43
(Received via mailing list)
2009/4/30 Paolo Montrasio <paolo@paolomontrasio.com>:
>> 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.
05720447a341aaffb8827039df3931df?d=identicon&s=25 Luca Mearelli (Guest)
on 2009-04-30 09:51
(Received via mailing list)
2009/4/30 Mauro <mrsanna1@gmail.com>:
> 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
B0f6d8efcf671ea3163449e231264cc4?d=identicon&s=25 Msan Msan (msan)
on 2009-04-30 11:51
(Received via mailing list)
2009/4/30 Luca Mearelli <luca.mearelli@gmail.com>:
>>
> "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?
B0f6d8efcf671ea3163449e231264cc4?d=identicon&s=25 Msan Msan (msan)
on 2009-04-30 12:25
(Received via mailing list)
2009/4/30 Mauro <mrsanna1@gmail.com>:
>>> 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.
This topic is locked and can not be replied to.