完整性约束违反:1452不能添加或更新子行,因为添加了外键



我面临错误

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`report_sales`.`subdistributor`, CONSTRAINT `subdistributor_id_dso_foreign` FOREIGN KEY (`id_dso`) REFERENCES `dso` (`id_dso`)) (SQL:insert into `subdistributor` (`id_subdist`, `id_kategori_subdist`, `id_dso`, `nama_subdist`, `alamat1_subdist`, `alamat2_subdist`, `status`, `updated_at`, `created_at`) values (SUBDIST001, SUPERINDI, DSO-ACEH, PT Sumber Cipta Multiniaga, Jln . Gedong123, Samping gang, 1, 2021-10-25 09:52:37, 2021-10-25 09:52:37))

发生这种情况是因为我在迁移表上添加了外键,我需要外键来关联另一个表。

use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;
class CreateSubdistributor extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('subdistributor', function (Blueprint $table) {
$table->string('id_subdist');
$table->string('nama_subdist');
$table->string('alamat1_subdist')->nullable();
$table->string('alamat2_subdist')->nullable();
$table->string('id_kategori_subdist');
$table->string('id_dso');
$table->foreign('id_dso')->references('id_dso')->on('dso');
$table->string('created_by')->nullable();
$table->timestamp('created_date',$precision = 0);
$table->string('modified_by')->nullable();
$table->timestamp('modified_date',$precision = 0)->nullable()->default(null);
$table->string('status')->nullable();
$table->timestamps();
$table->primary('id_subdist');
});
}

控制器

public function import_excel(Request $request) 
{
// validasi
$this->validate($request, [
'file' => 'required|mimes:csv,xls,xlsx'
]);

// menangkap file excel
$file = $request->file('file');

// membuat nama file unik
$nama_file = rand().$file->getClientOriginalName();

// upload ke folder file_subdistributor di dalam folder public
$file->move('file_subdistributor',$nama_file);

// import data
Excel::import(new SubdistributorImport, public_path('/file_subdistributor/'.$nama_file));

// notifikasi dengan session
Session::flash('sukses','Data Subdistributor Berhasil Diimport!');

// alihkan halaman kembali
return redirect('/subdistributor');
}

我试着解决自己,但仍然没有找到解决这个问题的方法。请问有人能帮我吗?我用的是laravel 8,数据库是mysql

您的表中是否有与外键不匹配的现有数据?确保两列(subdistributorid_dsodsoid_dso)具有相同的数据类型和长度。

确保,所有数据,也"DSO-ACEH"存在于dso中。

您希望关联的id_dso列。

相关内容

最新更新