每个人。这是我2年软件开发生涯中的第一篇文章,由于没有相关答案,所以我将其发布,并且我对为什么出现此问题的想法已经用完了。
所以我正在运行一个小项目,我们在Laravel 5.6.28上开发自己的网站,该框架在PHP 7.2.4和MySQL 5.7.21上构建。
大多数情况下,一切似乎都很好,并且我已经使用Laravel框架工作了大约一年,而前一段时间我遇到了这个问题,但是那是在一个测试项目上,所以我并没有真正打扰尝试修复它,但现在又发生了。
当我与项目中的其他用户共享项目代码时会发生这种情况-它适用于除一台计算机以外的大多数计算机。错误消息是 Illuminate \ Database \ QueryException:SQLSTATE [HY000]:常规错误:1005无法创建表...外键约束格式不正确。
我找到的所有解决方案都是检查是否在相应的列中添加了unsigned(),但是我确实检查了它,并且所有外键字段都具有它。此外,在创建表之后,还会添加外键。
似乎在每个表上都崩溃了,但是它在所有其他项目成员计算机上都可以工作。
任何想法可能是什么问题?
这是创建用户表的代码
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('nick_name', 50)->unique();
$table->string('first_name', 50);
$table->string('last_name', 50);
$table->string('email', 100)->unique();
$table->string('password', 255);
$table->text('description')->nullable();
$table->string('twitter', 50)->nullable();
$table->string('facebook', 50)->nullable();
$table->string('instagram', 50)->nullable();
$table->string('linkedin', 50)->nullable();
$table->float('commitment')->default(1);
$table->string('position', 100)->default('Employee')->nullable();
$table->datetime('last_login')->nullable();
$table->integer('active')->unsigned()->default(1);
$table->integer('image_id')->unsigned()->default(1);
$table->integer('role_id')->unsigned()->default(1);
$table->timestamps();
$table->rememberToken();
});
Schema::table('users', function (Blueprint $table) {
$table->foreign('image_id')->references('id')->on('files');
$table->foreign('role_id')->references('id')->on('roles');
});
}
答案 0 :(得分:0)
如果我是你,我将像下面那样更新我的代码,并检查其是否有效,
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('nick_name', 50)->unique();
$table->string('first_name', 50);
$table->string('last_name', 50);
$table->string('email', 100)->unique();
$table->string('password', 255);
$table->text('description')->nullable();
$table->string('twitter', 50)->nullable();
$table->string('facebook', 50)->nullable();
$table->string('instagram', 50)->nullable();
$table->string('linkedin', 50)->nullable();
$table->float('commitment')->default(1);
$table->string('position', 100)->default('Employee')->nullable();
$table->datetime('last_login')->nullable();
$table->integer('active')->unsigned()->default(1);
$table->integer('image_id')->unsigned()->default(1);
$table->integer('role_id')->unsigned()->default(1);
$table->timestamps();
$table->rememberToken();
$table->foreign('image_id')->references('id')->on('files');
$table->foreign('role_id')->references('id')->on('roles');
});
}
但是奇怪的是,它可以在另一台计算机上工作,但不能在一台计算机上工作。
祝你好运!