ruby-on-rails rails -如何将postgres数据库从开发恢复到生产

igetnqfo  于 2023-02-10  发布在  Ruby
关注(0)|答案(1)|浏览(93)

我使用以下命令创建备份并将postgres数据库从开发恢复到生产,但之后我无法创建新记录

Create a database backup:

PGPASSWORD=$DB_PASSWORD pg_dump \
    --host=$DB_HOST \
    --username=$DB_USERNAME \
    --dbname=$DB_NAME \
    --format=custom \
    --file=D:/output.dmp

Restore a database from a backup

PGPASSWORD=$DB_PASSWORD pg_restore  \
    --host=$DB_HOST \
    --username=$DB_USERNAME \
    --dbname=$DB_NAME \
    D:/output.dmp
DB Setting:

default: &default
  adapter: postgresql
  encoding: unicode
  # For details on connection pooling, see Rails configuration guide
  # https://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 10 } %>

development:
  <<: *default
  database: dev_db
  username: postgres
  password: mypass

production:
  <<: *default
  url: <%= ENV['DATABASE_URL'] %>

数据库URL:postgres://用户名:密码@production_host. com/数据库名称
PS:生产和开发中的Database_name、用户名不同。
错误:错误:重复键值违反了唯一约束"table_name_pkey"详细信息:键(id)=(1)已存在。
从这个错误中我可以理解的是"恢复后,当我创建一个新记录并保存到数据库时,这个错误发生了......所以基本上,恢复表的主键后不会根据数据递增,例如:如果恢复一个表,其中有80条记录,pkey为1 - 80,则当我创建一条新记录并尝试将其保存到表中时,它的pkey以1(而不是81)开始,这在恢复后已经存在于表中"

qco9c6ql

qco9c6ql1#

您需要将转储还原到空数据库中,否则可能会发生这些错误。请在还原之前手动删除并重新创建数据库,或使用pg_dump --clean --create执行此操作。

相关问题