Tôi đã gặp sự cố tương tự khi thiết lập một ứng dụng Rails mới với Postgresql. Tôi nhận được các thông báo lỗi sau đây
FATAL: role "promisepreston" does not exist
Couldn't create 'MyBlog_development' database. Please check your configuration.
rails aborted!
ActiveRecord::NoDatabaseError: FATAL: role
Caused by:
PG::ConnectionBad: FATAL: role "promisepreston" does not exist
Để giải quyết vấn đề này, chỉ cần làm theo giải pháp bên dưới
Đầu tiên, chúng ta cần đăng nhập vào tài khoản người dùng postgres thông qua giao diện dòng lệnh;
sudo su - postgres
Tiếp theo, kết nối với máy chủ cơ sở dữ liệu bằng máy khách psql, với vai trò postgres:
psql -U postgres
Chào mừng bạn đến với psql 10.6, thiết bị đầu cuối tương tác PostgreSQL.
[email protected]:~$ psql -U postgres
psql (10.6 (Ubuntu 10.6-0ubuntu0.18.04.1))
Type "help" for help
postgres=#
Tiếp theo, được kết nối với ứng dụng khách psql, chúng tôi sẽ tạo một vai trò với tên vai trò mong muốn của chúng tôi có thuộc tính LOGIN và mật khẩu mong muốn của chúng tôi và điều đó có thể tạo cơ sở dữ liệu và quản lý vai trò ( N / B: Vui lòng không nhập postgres =# này , vì nó là một trình giữ chỗ):
postgres=# create role rolename with createdb login password 'password1';
Lưu ý dấu chấm phẩy ở cuối bắt buộc (;) ở cuối câu lệnh SQL. Dấu ngoặc đơn (‘‘) không phải là một phần của mật khẩu, nhưng phải đi kèm mật khẩu.
Nó đã hoạt động? Bạn có thể kiểm tra bằng lệnh \ du ( N / B: Vui lòng không nhập postgres =# này , vì nó là một trình giữ chỗ):
postgres=# \du
Bây giờ bạn có thể chạy lệnh để tạo cơ sở dữ liệu cho ứng dụng Rails của mình;
rails db:create
Và sau đó cũng chạy lệnh để di chuyển cơ sở dữ liệu cho ứng dụng Rails của bạn;
rails db:migrate
Đó là tất cả.
Tôi hy vọng điều này sẽ hữu ích