Мне пришлось перенести из рубинового сайта на основе mySql на приложение rails, используя postgresql. Нет проблем, кроме одного, и я не знаю, как его решить.postgresql nextval, генерирующий существующие значения
Миграция данных привела идентификаторы вместе с ним, а postgresql теперь имеет проблемы с существующими идентификаторами: мне не ясно, где она получает значение, которое оно использует для определения базы для nextval: это, конечно, не самое высокое значение в столбце, хотя вы можете подумать, что это будет хорошей идеей. В любом случае, теперь он сталкивается с существующими значениями id. Идентификатор столбца, созданный из стандартной миграции RoR определяется как
not null default nextval('geopoints_id_seq'::regclass)
Есть ли какое-то место, что значение, которое используется в качестве основы может быть взломан? Эта проблема может возникнуть в настоящее время ни в одной из 20 или около того столов: я мог бы использовать
'select max(id) from <table_name>'
, но это, кажется, делает идею колонки автоинкремента бессмысленной.
Как это лучше всего обрабатывается?
Ого, спасибо за быстрые и полезные ответы на все. Я забегу на решение @hgimenez, потому что я в среде Rails, но я полагаю, что сообщение состоит в том, что я могу сделать это через командную строку в postgres. В качестве продолжения: я собираюсь попробовать это, но могу ли я привести такое заявление в миграцию? –
Определенно, вы можете выполнить миграцию: ActiveRecord :: Base.connection.reset_pk_sequence! ('Table_name'), но это, безусловно, можно сделать и из psql. – hgmnz
+1 точка для awesomeness – kikito