如何在laravel中处理此迁移错误?

时间:2019-03-29 11:01:49

标签: php mysql web laravel-5 migration

我在餐厅系统中工作,正在向数据库中添加表,但create_menus_table有问题 我认为问题出在表之间的关系中,但我找不到它。

我试图删除所有这些并重新制作模型 并检查表中的错误是否 并删除数据库并删除所有模块

cmd中的错误

  

** Illuminate \ Database \ QueryException:SQLSTATE [42000]:语法   错误或访问冲突:1064您的SQL语法有错误;   检查与您的MariaDB服务器版本相对应的手册   在第1行的')'附近使用的正确语法(SQL:alter table menus   添加约束menus_user_id_foreign外键(user_id)   引用users())   C:\ xampp \ htdocs \ laravelrestaurantapp \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Connection.php:664       660 | //如果在尝试运行查询时发生异常,我们将格式化错误       661 | //包含SQL绑定的消息,这将使此异常成为       662 | //对开发人员有更多帮助,而不仅仅是数据库的错误。       663 | catch(例外$ e){

     
    

664 |抛出新的QueryException(         665 | $ query,$ this-> prepareBindings($ bindings),$ e         666 | );         667 | }         668 |异常跟踪:1 PDOException::(“” SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL错误     句法;检查与您的MariaDB服务器相对应的手册     在第1行“)'附近使用正确语法的语法版本           C:\ xampp \ htdocs \ laravelrestaurantapp \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Connection.php:452     2 PDO :: prepare(“ alter table menus添加约束     menus_user_id_foreign外键(user_id)引用了users     ()“)           C:\ xampp \ htdocs \ laravelrestaurantapp \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Connection.php:452     请使用参数-v查看更多详细信息。**

  

菜单表

    <?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateMenusTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('menus', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title')->unique();
            $table->string('type');
            $table->text('description');
            $table->boolean('status');
            $table->string('image');
        // to make relation with the users table as the menu has several users
        // as one to many relationship
        $table->integer('user_id')->unsigned();
        $table->foreign('user_id')->reference('id')->on('users');

        $table->timestamps();
    });
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::drop('menus');
}

}

2 个答案:

答案 0 :(得分:0)

Schema::table('jobs', function($table) {

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

尝试

答案 1 :(得分:0)

  

只是拼写错误,它是引用而不是引用   $ table-> foreign('user_id')-> reference('id')-> on('users');

$ table-> foreign('user_id')-> references('id')-> on('users');