@vanderv
Ruby on Rails

[rails] Как импортировать seed данные с id в postgresql?

rake db:seed RAILS_ENV=production
Все данные с id (так использую paperclip, а ему важно id записи, так как по этому пути сохраняется фоточка)
После выполнения кода, данные записываются в базку, но после я не могу создать запись:
ОШИБКА:  повторяющееся значение ключа нарушает ограничение уникальности "pages_pkey"
DETAIL:  Ключ "(id)=(3)" уже существует.
  • Вопрос задан
  • 3002 просмотра
Пригласить эксперта
Ответы на вопрос 3
mastedm
@mastedm
Надо сдвинуть sequence в базе

www.postgresql.org/docs/9.1/static/functions-seque...
Ответ написан
Комментировать
Freika
@Freika
Senior Ruby on Rails developer
Точно не скажу, но кажется, я в похожем случае делал что-то с постгресом, заставляя его начинать отсвет не с единицы(для айдишников, естественно), а с импортированного n+1.
Ответ написан
Комментировать
deemytch
@deemytch
linux root, ruby/perl programmer, sql, backend.
у меня мигрирует из проекта в проект такое:
$ cat lib/tasks/db.rake
namespace :db do
  desc "Установить все счётчики ID в актуальное значение"
  task :reset_seq => :environment do
    query = "SELECT  'SELECT SETVAL(' ||quote_literal(quote_ident(S.relname))|| ', MAX(' ||quote_ident(C.attname)|| ') ) FROM ' ||quote_ident(T.relname)|| ';'
FROM pg_class AS S, pg_depend AS D, pg_class AS T, pg_attribute AS C
WHERE S.relkind = 'S'
    AND S.oid = D.objid
    AND D.refobjid = T.oid
    AND D.refobjid = C.attrelid
    AND D.refobjsubid = C.attnum
ORDER BY S.relname;"
     ActiveRecord::Base.connection.execute(query).each{ |s| ActiveRecord::Base.connection.execute(s["?column?"])}
  end
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы