Saya telah menginstal PostgreSQL di Mac OS Lion saya, dan saya sedang mengerjakan aplikasi rel. Saya menggunakan RVM untuk memisahkan semuanya dari aplikasi Rails saya yang lain.
Untuk beberapa alasan ketika saya mencoba untuk memigrasi db untuk pertama kalinya, rake tidak dapat menemukan pengguna postgres. Saya mendapatkan kesalahan
FATAL: role "postgres" does not exist
Saya memiliki pgAdmin sehingga saya dapat dengan jelas melihat ada pengguna postgres di DB - sebenarnya akun admin - jadi saya tidak yakin harus berbuat apa lagi.
Saya membaca di suatu tempat tentang orang-orang yang mengalami masalah dengan PostgreSQL karena di jalur mana ia diinstal, tetapi kemudian saya tidak berpikir saya akan sejauh itu jika tidak dapat menemukan db.
postgres
belum dibuat, yang dapat mengarah ke pesan kesalahan yang sama, lihat pertanyaan terkait ini: stackoverflow.com/questions/11919391/…Jawaban:
Pesan ini muncul, ketika pengguna database tidak ada. Bandingkan manualnya di sini .
Beberapa database lokal tidak bisa menjadi penjelasannya. Peran berlaku di seluruh kluster. The pengguna lagi :
Anda harus berakhir di cluster database lain . Itu akan menjadi server lain yang berjalan pada mesin yang sama, mendengarkan port yang berbeda. Atau, lebih mungkin, di mesin lain.
Mungkinkah pesan itu sebenarnya berasal dari server jauh?
sumber
docker rmi $(docker images -q) --force
. tetapi masalahnya ada padavolumes
saya kiraSebenarnya, untuk beberapa alasan yang tidak diketahui, saya menemukan masalah sebenarnya karena peran postgresql belum dibuat.
Coba jalankan:
Perhatikan bahwa peran adalah cara PostgreSQL mempertahankan izin database . Jika tidak ada peran untuk pengguna postgres, maka tidak dapat mengakses apapun. Perintah createuser adalah pembungkus tipis di sekitar perintah CREATE USER, CREATE ROLE, dll.
sumber
sudo su - postgres
sebelum perintah ini bekerja untuk saya. Terima kasih!-r
pilihan adalah tidak diperlukan dengan-s
pilihan. Pengguna super menyertakan atribut "Buat peran".Baru-baru ini saya mendapat masalah ini segera setelah menginstal postgres. Jika itu datang segera setelah instalasi, Anda mungkin kehilangan pengguna default, postgres. Dalam hal ini, Anda dapat membuat postgres pengguna default menggunakan perintah di bawah ini.
createuser -s -U $ USER
Ini akan meminta Anda untuk memasukkan nama peran dan kata sandi database yang diperlukan. Setelah Anda menyelesaikan proses, Anda dapat masuk ke konsol postgres menggunakan perintah di bawah ini.
Contoh: psql -U postgres
Di sini, Anda harus memasukkan kata sandi jika Anda telah memberikannya, saat membuat pengguna.
Semoga membantu :)
sumber
Saya menggunakan OSX 10.8, dan semua yang saya coba akan memberi saya
FATAL: role "USER" does not exist
. Seperti yang dikatakan banyak orang di sini, laricreateuser -s USER
, tapi itu memberi saya kesalahan yang sama. Ini akhirnya berhasil untuk saya:The
createuser -s --username=postgres
menciptakan superuser (s flag) dengan menghubungkan sebagai postgres (--username = postgres flag).Saya melihat bahwa pertanyaan Anda telah terjawab, tetapi saya ingin menambahkan jawaban ini untuk orang-orang yang menggunakan OSX yang mencoba menginstal PostgreSQL 9.2.4.
sumber
sudo su postgres
.Saya menemukan masalah ini tepat ketika saya pertama kali menginstal hal POSTGRES.app Heroku. Setelah suatu pagi coba-coba, saya pikir satu baris kode ini memecahkan masalah. Seperti yang dijelaskan sebelumnya, ini karena postgresql tidak memiliki peran default saat pertama kali disiapkan. Dan kita perlu mengaturnya.
Anda harus masuk ke konsol psql masing-masing untuk menggunakan perintah psql ini.
Perhatikan juga bahwa, jika Anda sudah membuat peran 'postgre' tetapi masih mendapatkan kesalahan izin, Anda perlu mengubahnya dengan perintah:
Semoga membantu!
sumber
Dalam dokumentasi Heroku; Memulai dengan rel 4, mereka berkata:
Kemudian Anda hanya menghapus baris itu dalam "pengembangan:", jika Anda tidak memberitahu database yang bekerja di bawah peran "myapp"
Ingat juga untuk membuat database untuk pengembangan:
Ganti "myapp" untuk nama aplikasi Anda
sumber
Bisakah Anda memiliki beberapa database lokal? Periksa Anda
database.yml
dan pastikan Anda mencapai pg db yang Anda inginkan. Gunakanrails console
untuk mengonfirmasi.sumber
Prosedur instalasi membuat akun pengguna yang disebut
postgres
yang terkait dengan peran Postgres default. Untuk menggunakan Postgres, Anda dapat masuk ke akun itu. Tetapi jika tidak ditentukan secara eksplisit, aplikasi rails mencari peran yang berbeda, terutama peran yang memiliki nama pengguna unix Anda yang mungkin tidak dibuat dalam peran postgres.Untuk mengatasinya, Anda dapat membuat peran baru, pertama dengan beralih ke peran default postgres yang dibuat saat instalasi
sudo -i -u postgres
Setelah Anda masuk ke akun postgres, Anda dapat membuat pengguna baru dengan perintah:
createuser --interactive
Ini akan meminta Anda dengan beberapa pilihan dan, berdasarkan tanggapan Anda, jalankan perintah Postgres yang benar untuk membuat pengguna.
Lewati nama peran dan beberapa izin dan peran dibuat, Anda kemudian dapat memigrasi db Anda
sumber
Jawaban saya jauh lebih sederhana. Pergi saja ke folder db dan hapus kolom id, yang telah saya coba buat dengan paksa, tetapi sebenarnya dibuat secara otomatis. Saya juga menghapus USERNAME di file database.yml (di bawah folder config).
sumber
Di prompt perintah pengguna lokal Ubuntu, tetapi bukan pengguna root, ketik
sudo -u postgres buat nama pengguna
nama pengguna di atas harus sama dengan nama yang ditunjukkan dalam pesan "FATAL: peran 'nama pengguna' tidak ada."
Masukkan kata sandi untuk nama pengguna.
Kemudian masukkan kembali perintah yang dihasilkan peran pesan tidak ada.
sumber
Saya berakhir di sini setelah mencoba mengikuti tutorial Ryan Bate tentang penerapan ke AWS EC2 dengan karet. Inilah yang terjadi pada saya: Kami membuat aplikasi baru menggunakan "
rails new blog -d postgresql
Jelas ini membuat aplikasi baru dengan pg sebagai database, tetapi database belum dibuat. Dengan sqlite, Anda cukup menjalankan rake db: migrate, namun dengan pg Anda perlu membuat database pg terlebih dahulu. Ryan tidak melakukan langkah ini. Perintahnya adalah
rake db:create:all
, lalu kita bisa larirake db:migrate
Bagian kedua adalah mengubah file database.yml. Default untuk nama pengguna saat file dibuat adalah 'appname'. Namun, kemungkinan peran Anda untuk admin postgresql adalah sesuatu yang berbeda (setidaknya untuk saya). Saya mengubahnya menjadi nama saya (lihat saran di atas tentang membuat nama peran) dan saya siap melakukannya.
Semoga ini membantu.
sumber
Setelah banyak menginstal dan menghapus Postgres, inilah yang sekarang tampaknya berfungsi secara konsisten untuk saya dengan Os X Mavericks, Rails 4 dan Ruby 2.
Di file database.yml, saya mengubah nama pengguna default menjadi nama pengguna komputer saya yang bagi saya hanya "admin".
Pada baris perintah saya menjalankan rake db: create: all
Lalu saya menjalankan rake db: migrate
Ketika saya menjalankan server rails dan memeriksa host lokal dikatakan "Selamat datang di kapal".
sumber
Anda mungkin dapat mengatasinya dengan menjalankan
initdb -U postgres -D /path/to/data
atau menjalankannya sebagai user postgres, karena defaultnya adalah pengguna saat ini. GL!sumber