Ich habe eine Bestellungstabelle und eine haben eine sell_shipping_labels
, die orders.id
als ausländische verweist. Allerdings, wenn ich die Laravel Migration laufen bekomme ich den gefürchteten Fehlercode:Laravel-Migration (errno: 150 "Foreign-Key-Constraint ist falsch gebildet")
[Illuminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1005 Can't create tablecheapbooks_test
.#sql-b5b_b2a
(errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter tablesell_shipping_labels
add constraintsell_shipping_labels_order_id_foreign
foreign key (order_id
) referencesorders
(id
))[Doctrine\DBAL\Driver\PDOException]
SQLSTATE[HY000]: General error: 1005 Can't create tablecheapbooks_test
.#sql-b5b_b2a
(errno: 150 "Foreign key constraint is incorrectly formed")
Das ist mein orders
Tabellenschema:
Schema::create('orders', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id');
$table->integer('book_id');
$table->integer('status_id');
$table->double('payment_amount')->nullable();
$table->timestamp('received_at')->nullable();
$table->timestamp('paid_at')->nullable();
$table->timestamps();
$table->softDeletes();
});
Und das ist mein sell_shipping_labels
Schema:
Schema::create('sell_shipping_labels', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('order_id');
$table->string('shippo_object_id');
$table->string('label_url');
$table->string('tracking_url');
$table->string('tracking_number');
$table->timestamp('arrived_at');
$table->timestamps();
$table->softDeletes();
$table->foreign('order_id')->references('id')->on('orders');
});
}
Jetzt Ich habe das Internet auf den Kopf gestellt, um das Problem herauszufinden. Alle Post zu diesem Problem beziehen sich alle auf die Tatsache, dass die Bestellungstabelle erstellt werden muss vor die Tabelle, die den Fremdschlüssel hat, aber das ist kein Problem für mich, weil meine Dateien in der richtigen Reihenfolge sind.
Ich habe meine aktualisiert Tabellenschema, aber ich bekomme immer noch den gleichen Fehlercode. – FrenchMajesty
@FrenchMajesty haben Sie versucht, DB neu zu erstellen? Falls ja, poste bitte die neue Fehlermeldung, weil ich mir ziemlich sicher bin, dass die Syntax korrekt ist. –
Löschen und neu erstellen meiner Datenbank sowie Ihre Antwort hat den Trick. Vielen Dank! – FrenchMajesty