我面临错误
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
您的表中是否有与外键不匹配的现有数据?确保两列(subdistributor
。id_dso
和dso
。id_dso
)具有相同的数据类型和长度。
确保,所有数据,也"DSO-ACEH"存在于dso
中。
id_dso
列。