0

我的问题很简单,但我找不到这个特定问题的任何答案。

问题是,我在 Laravel 中有这个迁移:

public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name')->unique();
        $table->string('email')->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        //$table->string('guid');
        $table->boolean('verified')->default('0');
        $table->integer('tribe_id')->length(10)->unsigned()->default('1');
        $table->boolean('admin')->default('0');
        $table->rememberToken();
        $table->timestamps();
    });
    Schema::table('users', function($table) {
        $table->foreign('tribe_id')->references('id')->on('tribes')->onDelete('cascade');
    });
}

如您所见,我对一个字段进行了评论。但是,当我删除 // 并运行迁移(在干净的数据库上)并且当我尝试执行登录时,它会返回:

lluminate \ Database \ QueryException (HY000)
SQLSTATE[HY000]: General error: 2057 A stored procedure returning result sets of different size was called. This is not supported by libmysql (SQL: select * from `users` where `email` = email@email.com limit 1)

此验证代码的主要部分是由 Laravel artisan make:auth 命令默认生成的。

问题是,我已经有一些额外的字段并且它确实有效,但是由于某种原因,当我添加“guid”新字段(或另一个,名称无关紧要)时,它破坏了我错过的东西......

编辑:它与 MySQL 数据库有关。我将其从 Shared Hosting MariaDB 服务器更改为 Google Cloud (5.7),它正在工作......

EDIT2:通过使用另一个名称创建另一个数据库来解决它(用相同的名称重新创建不起作用)并且它再次开始工作......

4

1 回答 1

0
Schema::table('users', function(Blueprint $table) {
    $table->foreign('tribe_id')->references('id')->on('tribes')->onDelete('cascade');
});

尝试像这样将蓝图放在表格中...

或者您可以将行 $table->foreign()... 放在 create 方法中。

于 2018-10-27T09:02:01.163 回答