Laravel – Verletzung der Integritätsbeschränkung: 1062 Doppelter Eintrag „0“ für Schlüssel „PRIMARY“
Posted: 06 Jan 2025, 21:36
Ich stoße auf dieses Problem:
"SQLSTATE[23000]: Verletzung der Integritätsbeschränkung: 1062 Doppelter Eintrag '0' für Schlüssel 'PRIMARY' ( SQL: Werte (abcd#1234, 1234, web, 2025-01-06) in Rollen (Name, Geschäfts-IDs, Schutzname, aktualisiertes_at, erstelltes_at) einfügen 13:29:42, 2025-01-06 13:29:42))"
Ich verwende die Spatie-Bibliothek, um Rollen und Begegnungen zu erstellen das obige Problem. Wenn ich den Fehler protokolliere, wird angezeigt, dass die ID 0 ist und dupliziert wird. Ich habe versucht, DB::beginTransaction(); zu verwenden, aber es ist nicht effektiv. Ich suche nach Anleitungen, wie ich damit umgehen soll.
Das Problem scheint mit der automatischen Inkrementierung des Primärschlüssels in Ihrer Rollentabelle zusammenzuhängen. Der Fehler deutet darauf hin, dass mehrere Datensätze versuchen, die ID 0 zu verwenden, was gegen die Primärschlüsseleinschränkung verstößt.
Ich habe versucht, DB::beginTransaction(); zu verwenden, aber das ist nicht der Fall effektiv
"SQLSTATE[23000]: Verletzung der Integritätsbeschränkung: 1062 Doppelter Eintrag '0' für Schlüssel 'PRIMARY' ( SQL: Werte (abcd#1234, 1234, web, 2025-01-06) in Rollen (Name, Geschäfts-IDs, Schutzname, aktualisiertes_at, erstelltes_at) einfügen 13:29:42, 2025-01-06 13:29:42))"
Ich verwende die Spatie-Bibliothek, um Rollen und Begegnungen zu erstellen das obige Problem. Wenn ich den Fehler protokolliere, wird angezeigt, dass die ID 0 ist und dupliziert wird. Ich habe versucht, DB::beginTransaction(); zu verwenden, aber es ist nicht effektiv. Ich suche nach Anleitungen, wie ich damit umgehen soll.
Code: Select all
DB::beginTransaction();
$this->businessUtil->newBusinessDefaultResources($business->ids, $user->id);
DB::commit();
Code: Select all
use Spatie\Permission\Models\Role;
public function newBusinessDefaultResources($business_ids, $user_id, $business_category_id=null)
{
$role = Role::create([ 'name' => 'abcd#' . $business_ids,
'business_id' => $business_ids,
'guard_name' => 'web', 'is_default' => 1
]);
$user->assignRole($role->name);
//Create Cashier role for a new business
$c_role = Role::create([ 'name' => 'abcde#' . $business_ids,
'business_ids' => $business_ids,
'guard_name' => 'web'
]);
//Create Tutor role for a new business
$p_role = Role::create(['name' => 'abcdef#' . $business_ids,
'business_ids' => $business_ids,
'guard_name' => 'web',
'is_default' => 1
]);
dd(1);
Ich habe versucht, DB::beginTransaction(); zu verwenden, aber das ist nicht der Fall effektiv