Ho dovuto migrare da un ruby basato su mySql sull'app rails all'utilizzo di postgresql. Nessun problema tranne uno finora, e non so come risolverlo.postgresql nextval che genera valori esistenti
La migrazione di dati ha portato id insieme a esso e Postgresql ha ora problemi con gli ID esistenti: non mi è chiaro dove ottiene il valore che usa per determinare la base per nextval: non è certamente il il valore più alto nella colonna, anche se potresti pensare che sarebbe una buona idea. In ogni caso, sta entrando in collisione con i valori di identificazione esistenti. colonna id, creato da una migrazione standard RoR è definita come
not null default nextval('geopoints_id_seq'::regclass)
C'è qualche posto che il valore utilizza come base può essere violato? Questo problema potrebbe ora verificarsi in uno qualsiasi dei 20 o giù di tabelle: ho potuto utilizzare
'select max(id) from <table_name>'
ma che sembra rendere l'idea di una colonna autoincrement inutile.
Come viene gestito meglio questo?
Wow, grazie per tutte le risposte tempestive e utili. Farò una corsa alla soluzione @hgimenez, perché sono in un ambiente Rails, ma presumo che il messaggio è che posso farlo tramite la riga di comando in postgres. Come follow-up: ho intenzione di provare questo, ma posso mettere una tale affermazione in una migrazione? –
Sicuramente, si può avere una migrazione che va: ActiveRecord :: Base.connection.reset_pk_sequence! ('Table_name'), ma questo può certamente essere fatto anche da psql. – hgmnz
+1 point per awesomeness – kikito