Я пытаюсь создать внешний ключ между таблицами пользователей и ролями (пользователь может иметь роль, роль может быть назначена нескольким пользователям)
Сначала я создал все свои миграции, а затем добавил файл с внешними ключами, чтобы убедиться, что все таблицы существуют.
Миграции:
Как вы можете видеть, см. последняя миграция касается внешних ключей, это код:
class CreateForeignKeys extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->unsignedBigInteger('role_id');
$table->foreign('role_id')->references('id')->on('roles');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('foreign_keys');
}
}
Это код моей миграции пользователя:
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('nom', 45);
$table->string('prenom', 45);
$table->string('team', 45)->nullable();
$table->string('tel1', 45)->nullable();
$table->string('tel2', 45)->nullable();
$table->string('username', 50)->nullable();
$table->string('password', 50)->nullable();
$table->tinyInteger('is_active');
$table->dateTime('created')->nullable();
$table->dateTime('modified')->nullable();[![enter image description here][2]][2]
});
}
Это моя структура базы данных, как вы можете, У меня есть поле "role_id", но не ключ, показывающий внешний ключ, и у меня также есть эта ошибка:
И ошибка:
SQLSTATE [HY000]: Общая ошибка: 1215 Невозможно добавить ограничение внешнего ключа (SQL: создать таблицу roles
(id
int без знака, не ноль, первичный ключ auto_increment, name
varchar (100) ноль, description
varchar (255) ноль) набор символов по умолчанию utf8mb4 сопоставить 'utf8mb4_unicode_ci')
Tapez un message
Спасибо Вам за помощь.