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

Di chuyển Laravel - Vi phạm ràng buộc toàn vẹn:1452 Không thể thêm hoặc cập nhật hàng con:ràng buộc khóa ngoại không thành công

Tôi đã từng gặp vấn đề tương tự. Đã sửa nó bằng cách thêm nullable đến trường:

Schema::create('table_name', function (Blueprint $table) {
    ...
    $table->integer('some_id')->unsigned()->nullable();
    $table->foreign('some_id')->references('id')->on('other_table');
    ...
});

Lưu ý rằng sau khi di chuyển, tất cả các hàng tồn tại sẽ có some_id = NULL .

CẬP NHẬT :

Kể từ Laravel 7, có nhiều cách ngắn hơn để làm điều tương tự:

$table->foreignId('some_id')->nullable()->constrained();

Điều rất quan trọng là nullable đi TRƯỚC KHI constrained .

Bạn có thể tìm thêm thông tin tại đây, trong tài liệu chính thức



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự khác biệt giữa Khóa, Khóa chính, Khóa duy nhất và Chỉ mục trong MySQL

  2. NHÓM MySQL BẰNG nhiều cột từ các bảng khác nhau

  3. Bảng 'performance_schema.session_variables' không tồn tại

  4. Sao lưu cơ sở dữ liệu MySQL của bạn

  5. mysqli hay chết, nó có phải chết không?