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

Các loại được liệt kê với ActiveRecord và Postgresql

Bạn cần chuyển từ db/schema.rb thành db/structure.sql .

Vấn đề cơ bản là schema.rb là một đại diện cho cấu trúc của cơ sở dữ liệu như ActiveRecord thấy nhưng ActiveRecord không hiểu nhiều thứ (chẳng hạn như create type , Ràng buộc KIỂM TRA và những thứ khác hiển thị trong execute some_raw_sql các câu lệnh trong di chuyển) mà PostgreSQL thực hiện. Bạn có thể create type tất cả những gì bạn muốn ngoại trừ schema.rb sẽ không bao giờ nhìn thấy nó.

Nếu bạn muốn sử dụng những thứ mà ActiveRecord không hiểu thì bạn phải sử dụng db/structure.sql để lưu trữ cấu trúc cơ sở dữ liệu của bạn. structure.sql lưu trữ cấu trúc của cơ sở dữ liệu khi cơ sở dữ liệu hiểu nó, không phải như ActiveRecord hiểu nó.

Chuyển đổi dễ dàng:

  1. Cập nhật config/application.rb của bạn để chứa config.active_record.schema_format = :sql .
  2. Thực hiện rake db:structure:dump để lấy db/structure.sql ban đầu .
  3. Xóa db/schema.rb từ cây thư mục của bạn và kiểm soát sửa đổi.
  4. Thêm db/structure.sql để kiểm soát sửa đổi.
  5. Điều chỉnh thói quen cào của bạn:
    • Sử dụng db:structure:dump thay vì db:schema:dump
    • Sử dụng db:structure:load thay vì db:schema:load

Điều đó nói rằng, tôi không chắc enum gốc của PostgreSQL tốt như thế nào các kiểu sẽ tương tác với ActiveRecord như tôi chưa từng làm. enum của AR s là bản dịch phía máy khách giữa chuỗi và số nguyên nhưng enum s được xử lý bên trong cơ sở dữ liệu và chúng không biết về nhau. Có thể có xung đột và bạn cần đảm bảo giữ chúng được đồng bộ hóa với nhau.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Heroku psql:FATAL:các khe kết nối còn lại được dành riêng cho các kết nối siêu người dùng không sao chép

  2. Xử lý EXCEPTION và trả về kết quả từ hàm

  3. Làm cách nào để cấp quyền cho người dùng trên tất cả các bảng mới trong Postgres?

  4. Lợi ích của PostgreSQL

  5. sử dụng bí danh kết hợp trong một điều kiện:kết hợp (tối đa (trường hợp khi giá trị sau đó là giá trị) làm bí danh