簡體   English   中英

Laravel遷移外鍵錯誤

[英]Laravel Migration Foreignkey Error

Laravel 5.6運行於:PHP 7.2,MariaDB 10.3

當我想為我的表設置外鍵時,我只會繼續犯該錯誤。

在其他表上,Laravel本身定義的所有id變量和自動遞增的無符號

所以,我的遷移是這樣的:

public function up()
{

    Schema::create('user_roles', function (Blueprint $table) {
        $table->increments('id');
        $table->unsignedInteger('role_id');
        $table->unsignedInteger('user_id');

        $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
    });
}

錯誤是這樣的

SQLSTATE [42000]:語法錯誤或訪問沖突:1064 SQL語法有錯誤; 檢查與您的MariaDB服務器版本相對應的手冊以在lin e 1處在刪除級聯上使用')附近的正確語法(SQL:alter table user_roles add約束user_roles_role_id_foreign外鍵( role_id )在刪除級聯上引用roles ())

Laravel拋出的錯誤

1 PDOException::(“ SQLSTATE [42000]:語法錯誤或訪問沖突:1064您的SQL語法有錯誤;請查看與MariaDB服務器版本相對應的手冊,以了解在刪除級聯上')附近使用的正確語法'在第1行“)C:\\ xampp \\ htdocs \\ order-project \\ vendor \\ laravel \\ framework \\ src \\ Illuminate \\ Database \\ Connection.php:452

2 PDO :: prepare(“更改表user_roles添加約束user_roles_role_id_foreign外鍵( role_id )引用刪除級聯上的roles ()“)C:\\ xampp \\ htdocs \\ order-project \\ vendor \\ laravel \\ framework \\ src \\ Illuminate \\ Database \\ Connection.php:452

嘗試這個

$table->integer('role_id')->unsigned();
$table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');

$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

我認為您對這篇文章Laravel外鍵onDelete('cascade')不起作用有類似問題

希望這可以幫助

我解決了問題。 由於Laravel嘗試在角色表之前遷移user_roles表,因此失敗。 我只是將角色表遷移到user_roles表之前,並且它起作用了! 在解決方案規則表未引發錯誤之前,但未完全創建它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM