Die folgende Tutorial-Kolumne von Laravel stellt Ihnen einige häufige Fehler und Lösungen für Anfänger der Laravel-Migration vor. Ich hoffe, dass sie für alle hilfreich ist!
Vorwort
Ich habe vor Kurzem angefangen, Laravel zu lernen. Ich möchte ein einfaches Adressbuchsystem aufbauen und zwei Tabellen, eine Filiale und eine Kontakte einrichten. Beim Erstellen der Migrationsdatei habe ich nicht sorgfältig darüber nachgedacht, dass die Kontakttabelle mit den IDs der Filialen verknüpft ist. Daher ist beim Ausführen des Migrationsbefehls der folgende Fehler aufgetreten
[Illuminate\Database\QueryException] SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `contacts` add constraint `contac ts_branch_id_foreign` foreign key (`branch_id`) references `branches` (`id`) on delete cascade) [PDOException] SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint
php artisan migrate:reset
[ErrorException] include(/Users/Ade/www/laravel_phonebook5.2): failed to open stream: Operation now in progress
fehlgeschlagen Stream öffnen Fehlerlösung
more storage/logs/laravel.log
[2016-09-29 18:05:35] local.ERROR: exception 'ErrorException' with message 'include(/Users/Ade/www/laravel_phonebook5.2): failed to open stream: Operation now in progress' in /Users/Ade/www/laravel_phonebook5.2/vendor/composer/ClassLoader.php:412 Stack trace: #0 /Users/Ade/www/laravel_phonebook5.2/vendor/composer/ClassLoader.php(412): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(2, 'include(/Users/...', '/Users/Ade/www/...', 412, Array) #1 /Users/Ade/www/laravel_phonebook5.2/vendor/composer/ClassLoader.php(412): Composer\Autoload\includeFile() #2 /Users/Ade/www/laravel_phonebook5.2/vendor/composer/ClassLoader.php(301): Composer\Autoload\includeFile('/Users/Ade/www/...') #3 [internal function]: Composer\Autoload\ClassLoader->loadClass('CreateBranchesT...') #4 /Users/Ade/www/laravel_phonebook5.2/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(335): spl_autoload_call('CreateBranchesT...') #5 /Users/Ade/www/laravel_phonebook5.2/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(227): Illuminate\Database\Migrations\Migrator->resolve('2016_09_12_1728...') #6 /Users/Ade/www/laravel_phonebook5.2/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(206): Illuminate\Database\Migrations\Migrator->runDown(Object(stdClass), false)
. Der vom Protokoll angeforderte Name ist der Name der Migrationsdatei des Zweigs, den ich geändert habe. resolve('2016_09_12_1728...')
mdfind 2014_10_12_000000_create_users_table.php|grep phonebook
Passen Sie die Datei autoload_static.php an.
'CreateBranchesTable' => __DIR__ .,
Beziehen Sie sich auf die Konfiguration des normalen Migrationsdateinamens und fügen Sie
'CreateBranchesTable' => __DIR__ . '/../..' . '/database/migrations/2016_09_12_172822_create_branches_table.php',
Passen Sie die Datei autoload_classmap.php an
'CreateBranchesTable' => $baseDir . '/database/migrations/2016_09_29_172822_create_branches_table.php',
'CreateBranchesTable' => $baseDir . '/database/migrations/2016_09_12_172822_create_branches_table.php',
php artisan migrate:reset
Kontakte Rollback-Fehleranalyse
Kontakte können keine branch_id-Fremdschlüssellösung erstellen
php artisan migrate
Wenn man sich die Anweisung genau ansieht, liegt kein Fehler vor. Auf den ersten Blick sollte dies auf die Inkonsistenz zwischen der Typdeklaration branch_id und dem ID-Typ in der Branches-Tabelle zurückzuführen sein. Überprüfen Sie die Struktur der Kontakte und stellen Sie fest, dass „Unsigned“ nicht aktiviert ist. Führen Sie nach der Überprüfung die SQL-Anweisung aus, um den Fremdschlüssel hinzuzufügen. Dies gelingt.
找到问题原因后,我们就清空数据库,修改 contacts 的 migration 文件,调整 branch_id 为:
$table->integer('branch_id')->unsigned()->comment('机构ID');
再重新执行 migrate 命令,成功!
相关推荐:最新的五个Laravel视频教程
Das obige ist der detaillierte Inhalt vonZusammenfassung einiger häufiger Fehler bei der Laravel-Migration. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!