Tôi nhận được lỗi sau khi cố gắng thêm cột NOT NULL vào bảng hiện có. Tại sao nó lại xảy ra? Tôi đã thử rake db: thiết lập lại suy nghĩ rằng các hồ sơ hiện có là vấn đề, nhưng ngay cả sau khi đặt lại DB, vấn đề vẫn tồn tại. Bạn có thể vui lòng giúp tôi tìm ra điều này không.Cách giải quyết "Không thể thêm cột NOT NULL với giá trị mặc định NULL" trong SQLite3?
Migration file
class AddDivisionIdToProfile < ActiveRecord::Migration
def self.up
add_column :profiles, :division_id, :integer, :null => false
end
def self.down
remove_column :profiles, :division_id
end
end
Thông báo lỗi
SQLite3 :: SQLException: Không thể thêm một KHÔNG cột NULL với giá trị mặc định NULL: ALTER TABLE "profile" ADD " division_id "integer NOT NULL
giả định của bạn về đã có được hàng trong bảng âm thanh chính xác, và nó sẽ chỉ là về bất kỳ rdbms nào khác. Tuy nhiên, tôi lưu ý trong câu trả lời của tôi rằng SQLite là một ngoại lệ cho điều này. Lỗi này xuất hiện ngay cả khi bảng trống, vì vậy tôi đã đăng một giải pháp ngắn hơn. –
Điều này không đúng - sqlite không có cách nào để thay đổi cột. Tôi không biết 'change_column' là gì, nhưng nó không phải là sqlite. – Benubird
@Benubird, 'change_column' là một phương thức API trong [di chuyển Ruby on Rails] (http://guides.rubyonrails.org/active_record_migrations.html), đó là những gì OP hỏi. –