Saya punya aplikasi rel yang databasenya ada di SQLite (The dev and production). Karena saya pindah ke heroku, saya ingin mengonversi database saya ke PostgreSQL.
Ngomong-ngomong, saya mendengar bahwa basis data lokal, pengembangan, tidak perlu diubah dari SQLite, jadi saya tidak perlu mengubahnya, namun, bagaimana cara mengubah lingkungan produksi dari SQLite ke PostgreSQL?
Adakah yang pernah melakukan ini sebelumnya dan dapat membantu?
PS Saya tidak yakin apa sebenarnya proses ini disebut, tetapi saya pernah mendengar tentang migrasi database dari SQLite ke PostgreSQL, apakah itu yang perlu dilakukan?
ruby-on-rails
database
sqlite
postgresql
heroku
Vasseurth
sumber
sumber
Jawaban:
Anda dapat mengubah database.yml Anda dengan ini alih-alih menggunakan kotak sqlite di luar kotak:
sumber
Langkah-langkah di bawah ini berhasil untuk saya. Itu menggunakan permata keran , dibuat oleh Heroku dan disebutkan dalam Railscast # 342 Ryan Bates. Ada beberapa langkah tetapi bekerja dengan sempurna (bahkan tanggal pun dimigrasikan dengan benar), dan itu jauh lebih mudah daripada Oracle -> DB2 atau SQL Server -> migrasi Oracle yang telah saya lakukan di masa lalu.
Perhatikan bahwa SQLite tidak memiliki id pengguna atau kata sandi, tetapi gem ketukan memerlukan sesuatu. Saya hanya menggunakan literal "pengguna" dan "kata sandi".
Buat pengguna basis data Postgres untuk basis data baru
EDIT - Perintah yang diperbarui di bawah ini - gunakan ini sebagai gantinya
Buat database yang diperlukan
Perbarui Gemfile
Perbarui database.yml
Mulai keran server pada basis data sqlite
Migrasikan data
Mulai ulang server web Rails
Bersihkan Gemfile
sumber
Karena Anda pindah ke heroku, Anda dapat menggunakan keran untuk melakukan ini:
Ini akan mendorong data sqlite pengembangan lokal Anda ke produksi, dan heroku akan secara otomatis dikonversi ke postgres untuk Anda.
Ini juga harus berfungsi untuk mendorong produksi sqlite db ke heroku, tetapi tidak diuji.
sumber
Anda juga perlu menambahkan baris " gem 'pg' " ke gemfile Anda, 'pg' menjadi permata postgres saat ini untuk Rails.
sumber
Cukup perbarui file config / database.yml:
Di atas adalah apa yang dihasilkan saat Anda menjalankan:
Juga tambahkan ini ke Gemfile Anda:
sumber
Sekarang menjadi mudah dengan perintah tunggal
sumber
Setelah mengganti permata
'sqlite3
dengan permatapg
di gemfile, saya terus mendapatkansqlite3 error
ketika mendorong ke master Heroku karena saya lupa untuk melakukan pembaruan gemfile. Cukup melakukan hal berikut ini menyelesaikan ini:sumber
Perbarui saja datatbase.yml Anda
Kami menggunakan rel dan standar dasar harus mengikuti seperti KERING, Konvensi alih Konfigurasi dll. Jadi dalam kode di atas kita tidak mengulangi kode yang sama lagi dan lagi.
sumber
Sudah disebutkan di atas saya, tetapi saya tidak memiliki reputasi yang cukup sebagai lurker untuk dapat meningkatkannya. Dengan harapan menarik lebih banyak perhatian untuk pemula Rails membaca jawaban ini:
^^^ Ini adalah bagian penting selain file database.yml yang dijelaskan dalam jawaban yang dipilih untuk memigrasikan aplikasi Rails Anda ke Postgres.
sumber
Ini adalah bagaimana saya memiliki pengaturan milik saya. Jika Anda hanya menggunakan MRI dan bukan Jruby, Anda dapat melewati logika di pengaturan adaptor.
sumber
Anda dapat mencoba yang berikut ini:
sqlite3 development.db .dump | psql dbname username
atau coba dengan sqlitetopgscript: http://trac-hacks.org/browser/sqlitetopgscript/0.10/sqlite2pg
sumber
Solusi yang mungkin (bukan untuk heroku) adalah menggunakan yaml.db dari:
http://www.railslodge.com/plugins/830-yaml-db
sumber
Hari ini saya memiliki masalah yang sama. Saya sedang mengerjakan Rails 4.2.8. Solusinya adalah menentukan versi permata pg, dalam kasus saya
0.18.4
,.sumber