真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

laravel中migrate常見錯(cuò)誤有哪些-創(chuàng)新互聯(lián)

小編給大家分享一下laravel中migrate常見錯(cuò)誤有哪些,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括洞頭網(wǎng)站建設(shè)、洞頭網(wǎng)站制作、洞頭網(wǎng)頁制作以及洞頭網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,洞頭網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到洞頭省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

前言

最近斷斷續(xù)續(xù)開始 laravel 入門學(xué)習(xí),想整個(gè)簡單的通訊錄系統(tǒng),設(shè)立了兩個(gè)表,一個(gè) branches ,一個(gè) contacts。在創(chuàng)建 migration 文件的時(shí)候,沒有考慮仔細(xì),先把 contacts 表建立了,contacts 表有個(gè)外鍵連接到 branches 的 id,結(jié)果執(zhí)行 migrate 命令的時(shí)候,出現(xiàn)以下錯(cuò)誤:


[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

初步懷疑是表創(chuàng)建先后不規(guī)范造成,于是,手動(dòng)修改 branches 的 migration 文件名稱上的日期,再執(zhí)行


php artisan migrate:reset

出現(xiàn)如下錯(cuò)誤:


[ErrorException] 
 
include(/Users/Ade/www/laravel_phonebook5.2): failed to open stream: Operation now in progress

failed to open stream 錯(cuò)誤解決


光看錯(cuò)誤提示不是很理解,我們查看 laravel 的 log 文件


more storage/logs/laravel.log

找到出現(xiàn) ERROR 的那段話:


[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)

錯(cuò)誤出現(xiàn)在 ClassLoader.php 文件的 412 行


查看改行代碼,發(fā)現(xiàn)是一個(gè)調(diào)用文件的語句:

laravel中migrate常見錯(cuò)誤有哪些

而這個(gè)文件,在 log 文件中已經(jīng)指出,即resolve('2016_09_12_1728...')。log 提示的這個(gè)名稱,就是我修改的 branch 的 migration 文件名稱。


我們再搜搜正常的 migration 文件會(huì)在哪些地方出現(xiàn):


mdfind 2014_10_12_000000_create_users_table.php|grep phonebook

laravel中migrate常見錯(cuò)誤有哪些

可見,正常的有 3 個(gè)地方出現(xiàn),修改過的只有 1 個(gè)地方出現(xiàn)。


編輯這兩個(gè)未出現(xiàn)的文件


調(diào)整 autoload_static.php 文件


發(fā)現(xiàn) vendor/composer/autoload_static.php 文件中,和 branches 相關(guān)的語句如下:


'CreateBranchesTable' => __DIR__ .,

想來應(yīng)該是改名的時(shí)候,PHP Storm自動(dòng)幫我把這個(gè)文件里面有關(guān) branches 文件路徑全部給刪掉了。加回去就好了。
參照正常的 migration 文件名的配置情況,補(bǔ)充為


'CreateBranchesTable' => __DIR__ . '/../..' . '/database/migrations/2016_09_12_172822_create_branches_table.php',

調(diào)整 autoload_classmap.php 文件


我們發(fā)現(xiàn) autoload_classmap.php 文件中,有關(guān) branches 的路徑名還是修改前的路徑:


'CreateBranchesTable' => $baseDir . '/database/migrations/2016_09_29_172822_create_branches_table.php',

將其修改為


'CreateBranchesTable' => $baseDir . '/database/migrations/2016_09_12_172822_create_branches_table.php',

再執(zhí)行 migrate 命令


php artisan migrate:reset

laravel中migrate常見錯(cuò)誤有哪些

OK,剛才的錯(cuò)誤沒了,不過我們又發(fā)現(xiàn) contacts 表沒有回滾,


contacts 回滾失敗的分析


通過 sequel pro 連上數(shù)據(jù)庫查看

laravel中migrate常見錯(cuò)誤有哪些

發(fā)現(xiàn) contacts 表果然存在,但是 migration 表中已沒有內(nèi)容,想必再執(zhí)行前面 migrate 命令的時(shí)候出現(xiàn)錯(cuò)誤,contacts 的執(zhí)行記錄并沒有寫入 migrations 表中。我們可以重新執(zhí)行 migrate 命令試試看。首先手動(dòng)刪除這兩張表,也就是清空數(shù)據(jù)庫,然后執(zhí)行:


php artisan migrate

我們先忽視創(chuàng)建 contacts 表出現(xiàn)的錯(cuò)誤,刷新 sequel pro 查看一下:

laravel中migrate常見錯(cuò)誤有哪些

果然,migration 表中沒有 contacts 的創(chuàng)建記錄,這也就難怪執(zhí)行 reset 的時(shí)候,會(huì)沒有 contacts 的回滾操作了。


contacts 無法創(chuàng)建 branch_id 外鍵的解決


現(xiàn)在,我們已經(jīng)執(zhí)行了 migrate 命令,我們重新來看看這個(gè)最早出現(xiàn)的錯(cuò)誤:


[Illuminate\Database\QueryException] 
 
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `contacts` add constraint `contacts_branch_id_foreign` foreign key (`branch_id`) references `br 
 
anches` (`id`) on update cascade) 
 
[PDOException] 
 
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint

冷靜下來分析一下,既然提示的是 SQL 錯(cuò)誤,我們不妨在 sequel pro 中手工執(zhí)行一下這條 SQL 語句。

laravel中migrate常見錯(cuò)誤有哪些

果然,執(zhí)行返回錯(cuò)誤。


仔細(xì)查看語句并沒有錯(cuò)誤,一想,應(yīng)該是 branch_id 類型聲明和 branches 表中的 ID 類型不一致造成的吧。查看 contacts 的結(jié)構(gòu),發(fā)現(xiàn) Unsigned 沒有打鉤,勾選后再執(zhí)行增加外鍵的 SQL 語句,成功。

laravel中migrate常見錯(cuò)誤有哪些

找到問題原因后,我們就清空數(shù)據(jù)庫,修改 contacts 的 migration 文件,調(diào)整 branch_id 為:


$table->integer('branch_id')->unsigned()->comment('機(jī)構(gòu)ID');

再重新執(zhí)行 migrate 命令,成功!

laravel中migrate常見錯(cuò)誤有哪些

看完了這篇文章,相信你對(duì)“l(fā)aravel中migrate常見錯(cuò)誤有哪些”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


文章題目:laravel中migrate常見錯(cuò)誤有哪些-創(chuàng)新互聯(lián)
分享路徑:http://weahome.cn/article/ceegeh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部