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

Rails 3.2 + MySQL:Lỗi:Trường 'create_at' không có giá trị mặc định:CHÈN VÀO

Tôi vừa gặp một cái gì đó tương tự trên bản cài đặt MySql mới trên Mac OS.

Cuối cùng tôi đã thu hẹp nó xuống sự kết hợp của các phiên bản MySql mới hơn, bật "chế độ nghiêm ngặt" theo mặc định và dự án của tôi có một bảng với một số ràng buộc đáng ngờ trên đó. Bảng được đề cập là "bảng tham gia" được sử dụng trong :has_and_belongs_to_many mối quan hệ. Bằng cách nào đó, bảng đó đã được tạo bằng :created_at:updated_at thuộc tính có ràng buộc :null => false về họ. Rails 3.2 không tự động điền các trường dấu thời gian cho các bảng tham gia của :habtm các mối quan hệ. Khi chế độ nghiêm ngặt bị tắt, MySql sẽ chỉ điền vào các cột bằng không ngày tháng, như 0000-00-00 00:00:00 . Khi bật chế độ nghiêm ngặt, nó sẽ tạo ra một ngoại lệ.

Để khắc phục sự cố, tôi đã chạy di chuyển để cho phép các trường dấu thời gian trống. Như thế này:

class ChangeNullableForTimestampsOnThing1sThing2s < ActiveRecord::Migration
  def up
    change_column(:thing1s_thing2s, :created_at, :datetime, :null => true)
    change_column(:thing1s_thing2s, :updated_at, :datetime, :null => true)
  end

  def down
    change_column(:thing1s_thing2s, :created_at, :datetime, :null => false)
    change_column(:thing1s_thing2s, :updated_at, :datetime, :null => false)
  end
end

Thành thật mà nói, có lẽ tốt hơn là bạn chỉ nên bỏ các cột nếu bạn không cần chúng, nhưng chúng tôi có một số trường hợp đặc biệt mà chúng thực sự được đặt theo cách thủ công.



  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 bảng mysql nếu nó không tồn tại

  2. Làm cách nào để lấy tối đa tối thiểu và trung bình từ bảng trong mysql với các hàng khác nhau?

  3. Propel phpNames phân biệt chữ hoa chữ thường cho các cột

  4. MySQL-Cluster không khởi động được

  5. Truy vấn tham gia Mysql cho nhiều thẻ (mối quan hệ nhiều-nhiều) khớp với TẤT CẢ các thẻ?