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

Thêm bảng người dùng / tài khoản vào Postgres trong Chế độ xem Django

Tiền của tôi có tên sai chính tả. Tôi nhận thấy trong thông báo lỗi mà bạn có

OmniCloud_App_accounts
OmniCloud_App_user

Bảng thứ hai sử dụng số ít. Tình cờ không có bảng thứ hai như thế này:

OmniCloud_App_users

Ngoài ra, việc sử dụng các mã nhận dạng trường hợp hỗn hợp trong PostgreSQL là một nguồn uy tín lớn ở đây trên SO. Sớm muộn gì nó cũng sẽ cắn bạn. Nạn nhân của sự điên rồ đó là những người thường xuyên ở đây. Có thể có bất kỳ bảng nào có tên này - và bạn đã quên dấu ngoặc kép trong "OmniCloud_App_user" ở đâu đó?

omnicloud_app_user

Đó là hoặc giao dịch lưu người dùng chưa được cam kết. Bạn chỉ có thể tạo người dùng (và chưa có tài khoản) và kiểm tra xem nó có nằm trong cơ sở dữ liệu phù hợp trong bảng và có đúng ID không?

Chỉnh sửa:các công cụ để chẩn đoán sự cố

Nếu bạn biết mà người dùng đang được tạo, thì câu hỏi đặt ra là:mã khóa nước ngoài có user_id_refs_id_468fbcec324e93d2 không nhìn vào đúng nơi? Cùng một cơ sở dữ liệu? Lược đồ giống nhau? Cùng một bảng?

Để tìm ra bảng nào tồn tại trong cơ sở dữ liệu của bạn, hãy thử truy vấn sau (nếu bạn có các đặc quyền cần thiết):

SELECT n.nspname AS schema_name
      ,c.relname AS table_name
      ,c.relhastriggers
      ,c.reltuples
FROM   pg_catalog.pg_class c
LEFT   JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE  c.relname ~~* '%user%'
AND    c.relkind = 'r'
AND    nspname <> 'pg_catalog';

Hiển thị tất cả các bảng trong tất cả các lược đồ có tên "người dùng", không phân biệt chữ hoa chữ thường. Thêm vào đó nếu bảng có trình kích hoạt ( could gây ra sự cố của bạn) và có bao nhiêu hàng trong đó (ước tính được cập nhật bởi ANALYZE ). Có thể giúp bạn dẫn đầu ...

Bạn cũng có thể sử dụng lệnh meta \d của máy khách dòng lệnh tiêu chuẩn (thiết bị đầu cuối tương tác) psql .

Tôi sẽ chạy một trường hợp thử nghiệm và yêu cầu máy chủ postgres ghi lại mọi thứ mà nó nhận được. Đặt tham số này cho mục đích đó:

set log_statement = 'all';

Hướng dẫn về thông số ghi nhật ký .

Hướng dẫn về cách đặt tham số .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo một truy vấn để tạo một bộ truy vấn Django đầy thử thách

  2. Làm thế nào để kiểm tra vai trò của người dùng PostgreSQL hiện tại từ ứng dụng Qt?

  3. Làm thế nào để xác định lại toàn cầu tiếp theo trong PostgreSQL?

  4. Thứ tự sắp xếp chuỗi (LC_COLLATE và LC_CTYPE)

  5. Thu gọn nhiều hàng của mảng nếu các mảng chồng lên nhau