PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

FATAL:vai trò gốc không tồn tại

Bạn có thể kết nối với máy chủ Postgres bằng rõ ràng (my tức là tên người dùng hệ điều hành) hoặc ẩn (timonin tức là vai trò trong database.yml ) đăng nhập.

Khi tôi thấy database.yml của bạn có tuyên bố tên người dùng, nhưng chỉ dành cho sản xuất Môi trường. Chạy thử nghiệm rake mà không chỉ định môi trường Rails sẽ chạy chúng chống lại phát triển môi trường theo mặc định. Đó là lý do tại sao bạn gặp lỗi như FATAL: role "my" does not exist .

Vì vậy, tùy thuộc vào nhu cầu của bạn, bạn phải thêm các câu lệnh này vào tất cả các lỗi của cơ sở dữ liệu (testdevelopment cũng như vậy):

  username: timonin
  password: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>

Sau đó, ứng dụng Rails của bạn sẽ kết nối dưới dạng timonin người dùng.

Danh sách kiểm tra đầy đủ như sau:

  • Tạo vai trò

Đây là SQL cho PostgreSQL:

CREATE ROLE timonin LOGIN PASSWORD 'Pas$_sword'
  NOINHERIT CREATEDB
   VALID UNTIL 'infinity';
COMMENT ON ROLE timonin
  IS 'Timonin database role for Rails app';
  • Bỏ ghi chú hoặc thêm câu lệnh username: timoninpassword: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %> vào tệp database.yml của bạn
  • Chạy tất cả các thao tác với TIMONIN_DATABASE_PASSWORD biến:

Đây là lệnh rake đã thay đổi:

rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword'

hoặc:

rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword' RAILS_ENV=test

cho môi trường thử nghiệm.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chọn truy vấn có giới hạn bù quá chậm

  2. Cách hiệu quả để lấy dữ liệu từ cơ sở dữ liệu thứ hai?

  3. Làm phẳng các cặp khóa / giá trị tổng hợp từ trường JSONB?

  4. Rails / Postgres:"phải xuất hiện trong mệnh đề GROUP BY hoặc được sử dụng trong một hàm tổng hợp"

  5. Django &Postgres - phân vị (trung vị) và nhóm theo