Cha*_*eel 3 php terminal laravel composer-php
我目前正在通过终端在Laravel中进行迁移,并且在尝试使用php artisan migration时出现了这两个错误;我将在下面打印错误:
Exception trace:
1 PDOException::("SQLSTATE[HY000]: General error: 3780 Referencing column 'room_id' and referenced column 'id' in foreign key constraint 'contacts_room_id_foreign' are incompatible.")
/Users/shaquilenoor/Desktop/chatapi/vendor/laravel/framework/src/Illuminate/Database/Connection.php:458
2 PDOStatement::execute()
/Users/shaquilenoor/Desktop/chatapi/vendor/laravel/framework/src/Illuminate/Database/Connection.php:458Run Code Online (Sandbox Code Playgroud)
根据异常跟踪中包含的代码,问题似乎在以下代码中:
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateContactsTable extends Migration
{
public function up()
{
Schema::create('contacts', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('user1_id');
$table->unsignedInteger('user2_id');
$table->integer('room_id')->unique();
$table->timestamps();
$table->foreign('room_id')->references('id')->on('rooms');
$table->foreign('user1_id')->references('id')->on('users');
$table->foreign('user2_id')->references('id')->on('users');
});
}
public function down()
{
Schema::dropIfExists('contacts');
}
}Run Code Online (Sandbox Code Playgroud)
关于如何解决的任何想法?
Pay*_*jad 10
如果您使用的是Laravel 5.8,则新迁移将更改为大增量,因此,为了解决折旧错误,只需将integer更改为bigInteger,例如:
$table->integer('user_id')->unsigned()->index();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
Run Code Online (Sandbox Code Playgroud)
将更改为:
$table->bigInteger('user_id')->unsigned()->index();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
Run Code Online (Sandbox Code Playgroud)
要么更改原始迁移
大增量()
只是
增量();
或者在你的外键列中做
大整数()
代替
整数()
| 归档时间: |
|
| 查看次数: |
2914 次 |
| 最近记录: |