찾다
PHP 프레임워크Laravellaravel 마이그레이션의 몇 가지 일반적인 오류 요약

다음 튜토리얼 칼럼인 Laravel에서는 laravel 마이그레이션 초보자를 위한 몇 가지 일반적인 실수와 해결 방법을 소개합니다. 모든 분들께 도움이 되기를 바랍니다!

머리말

간헐적으로 Laravel을 배우기 시작했습니다. 간단한 주소록 시스템을 구축하고 테이블 2개, 지점 1개, 연락처 1개를 설정하고 싶습니다. 마이그레이션 파일을 생성할 때 처음에 연락처 테이블을 생성했는데, 연락처 테이블에 지점의 ID에 연결된 외래 키가 있어서 마이그레이션 명령을 실행할 때 다음과 같은 오류가 발생했습니다.

[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

failed 스트림 오류 해결 방법

오류 메시지만 보면 잘 이해가 되지 않습니다. laravel의 로그 파일

more storage/logs/laravel.log

을 살펴보고 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)

오류는 412번째 줄에 나타났습니다. ClassLoader.php 파일


다시 작성된 코드를 살펴보면 파일을 호출하는 명령문인 것을 발견했습니다.

laravel 마이그레이션의 몇 가지 일반적인 오류 요약

그리고 이 파일은 로그 파일, 즉

에서 지적되었습니다. 로그에 표시된 이름은 내가 수정한 브랜치의 마이그레이션 파일 이름입니다. resolve('2016_09_12_1728...')

일반 마이그레이션 파일이 나타나는 위치를 검색해 보겠습니다:

mdfind 2014_10_12_000000_create_users_table.php|grep phonebook

laravel 마이그레이션의 몇 가지 일반적인 오류 요약

일반 마이그레이션 파일은 3곳에 나타나고, 수정된 파일은 1곳에만 나타나는 것을 볼 수 있습니다.


나타나지 않은 이 두 파일을 편집하세요


autoload_static.php 파일을 조정하세요

vendor/composer/autoload_static.php 파일에서 브랜치와 관련된 문장은 다음과 같은 것을 발견했습니다.

'CreateBranchesTable' => __DIR__ .,

그래야 할 것 같습니다. 이름을 변경하면 PHP Storm이 자동으로 이 파일의 모든 브랜치 파일 경로를 삭제했습니다. 다시 추가하면 됩니다.

일반 마이그레이션 파일명 구성을 참고하시고

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

autoload_classmap.php 파일을 조정하세요

autoload_classmap.php 파일에서 브랜치의 경로명이 여전히 그대로인 것을 확인했습니다. 수정 전:

'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

laravel 마이그레이션의 몇 가지 일반적인 오류 요약

을 실행하세요. 방금 발생한 오류는 사라졌지만 연락처 테이블은 롤백되지 않았습니다.


contacts. 롤백 실패 분석

시퀀스 프로를 통해 데이터베이스에 연결하여 확인

laravel 마이그레이션의 몇 가지 일반적인 오류 요약

연락처 테이블은 존재하는 것으로 확인되었으나 마이그레이션 테이블에 내용이 없는 것으로 확인되었습니다. 이전 마이그레이션 명령으로 인해 연락처 실행 기록이 마이그레이션 테이블에 기록되지 않았습니다. 마이그레이션 명령을 다시 실행하고 시도해 볼 수 있습니다. 먼저 이 두 테이블을 수동으로 삭제합니다. 즉, 데이터베이스를 지운 다음 다음을 실행합니다.

php artisan migrate

연락처 테이블 생성 중 오류를 무시하고 후속 프로를 새로 고치고 다음을 확인합니다.

laravel 마이그레이션의 몇 가지 일반적인 오류 요약

물론 생성 기록이 없습니다. 마이그레이션 테이블의 연락처 중 재설정을 실행할 때 연락처의 롤백 작업이 없다는 것은 놀라운 일이 아닙니다.


연락처는 Branch_id 외래 키 솔루션을 생성할 수 없습니다

이제 마이그레이션 명령을 실행했으므로 가장 초기 오류를 다시 살펴보겠습니다.

[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 오류이므로 진정하고 분석하세요. , 후속 프로에서 이 SQL 문을 수동으로 실행할 수도 있습니다.

laravel 마이그레이션의 몇 가지 일반적인 오류 요약

물론 실행 시 오류가 반환되었습니다.


문장을 자세히 보면 오류는 없습니다. 얼핏 보면 Branch_id 유형 선언과 Branch 테이블의 ID 유형이 일치하지 않아서 발생하는 문제일 것입니다. 연락처 구조를 확인하여 Unsigned가 체크되어 있지 않은지 확인한 후 SQL 문을 실행하여 외래 키를 추가하면 성공한다.

laravel 마이그레이션의 몇 가지 일반적인 오류 요약

找到问题原因后,我们就清空数据库,修改 contacts 的 migration 文件,调整 branch_id 为:

$table->integer('branch_id')->unsigned()->comment('机构ID');

再重新执行 migrate 命令,成功!

laravel 마이그레이션의 몇 가지 일반적인 오류 요약

相关推荐:最新的五个Laravel视频教程

위 내용은 laravel 마이그레이션의 몇 가지 일반적인 오류 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 jb51에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
Laravel의 백엔드 기능 : 데이터베이스, 논리 등Laravel의 백엔드 기능 : 데이터베이스, 논리 등Apr 14, 2025 am 12:04 AM

Laravel은 백엔드 개발에서 강력하게 수행되며 Eloquentorm, 컨트롤러 및 서비스 클래스를 통해 데이터베이스 작업을 단순화하고 대기열, 이벤트 및 기타 기능을 제공합니다. 1) Eloquentorm은 쿼리를 단순화하기 위해 모델을 통해 데이터베이스 테이블을 맵핑합니다. 2) 비즈니스 로직은 모듈성 및 유지 관리를 향상시키기 위해 컨트롤러 및 서비스 클래스에서 처리됩니다. 3) 큐 시스템과 같은 다른 기능은 복잡한 요구를 처리하는 데 도움이됩니다.

Laravel의 다양성 : 간단한 사이트에서 복잡한 시스템에 이르기까지Laravel의 다양성 : 간단한 사이트에서 복잡한 시스템에 이르기까지Apr 13, 2025 am 12:13 AM

Laravel Development Project는 다양한 크기와 복잡성의 요구에 맞게 유연성과 힘으로 인해 선정되었습니다. Laravel은 간단한 블로그에서 복잡한 엔터프라이즈 수준 시스템에 이르기까지 라우팅 시스템, Eloquentorm, Artisan Command Line 및 기타 기능을 제공합니다.

Laravel (PHP) vs. Python : 개발 환경 및 생태계Laravel (PHP) vs. Python : 개발 환경 및 생태계Apr 12, 2025 am 12:10 AM

개발 환경과 생태계에서 Laravel과 Python의 비교는 다음과 같습니다. 1. Laravel의 개발 환경은 간단하며 PHP와 작곡가 만 필요합니다. Laravelforge와 같은 풍부한 확장 패키지를 제공하지만 확장 패키지 유지 보수는시기 적절하지 않을 수 있습니다. 2. 파이썬의 개발 환경도 간단하며 파이썬과 PIP 만 필요합니다. 생태계는 거대하고 여러 분야를 다루지 만 버전 및 종속성 관리는 복잡 할 수 있습니다.

Laravel 및 백엔드 : 파워링 웹 응용 프로그램 논리Laravel 및 백엔드 : 파워링 웹 응용 프로그램 논리Apr 11, 2025 am 11:29 AM

Laravel은 백엔드 논리에서 어떻게 중요한 역할을합니까? 라우팅 시스템, eloquentorm, 인증 및 승인, 이벤트 및 청취자, 성능 최적화를 통해 백엔드 개발을 단순화하고 향상시킵니다. 1. 라우팅 시스템은 URL 구조의 정의 및 요청 처리 로직을 정의 할 수 있습니다. 2. eloquentorm은 데이터베이스 상호 작용을 단순화합니다. 3. 인증 및 인증 시스템은 사용자 관리에 편리합니다. 4. 이벤트와 리스너는 느슨하게 결합 된 코드 구조를 구현합니다. 5. 성능 최적화는 캐싱 및 대기열을 통한 응용 프로그램 효율성을 향상시킵니다.

Laravel이 왜 그렇게 인기가 있습니까?Laravel이 왜 그렇게 인기가 있습니까?Apr 02, 2025 pm 02:16 PM

Laravel의 인기에는 단순화 된 개발 프로세스, 쾌적한 개발 환경 및 풍부한 기능이 포함됩니다. 1) PHP의 유연성을 결합하여 Rubyonrails의 설계 철학을 흡수합니다. 2) 개발 효율성을 향상시키기 위해 Eloquentorm, Blade Template Engine 등과 같은 도구를 제공하십시오. 3) MVC 아키텍처 및 종속성 주입 메커니즘은 코드를보다 모듈화적이고 테스트 가능하게 만듭니다. 4) 캐싱 시스템 및 모범 사례와 같은 강력한 디버깅 도구 및 성능 최적화 방법을 제공합니다.

어느 것이 더 낫습니까, 장고 또는 라벨?어느 것이 더 낫습니까, 장고 또는 라벨?Mar 28, 2025 am 10:41 AM

Django와 Laravel은 모두 풀 스택 프레임 워크입니다. Django는 Python 개발자 및 복잡한 비즈니스 논리에 적합한 반면 Laravel은 PHP 개발자 및 우아한 구문에 적합합니다. 1. Django는 파이썬을 기반으로하며 빠른 개발 및 높은 동시성에 적합한 "배터리 완성"철학을 따릅니다. 2. Laravel은 PHP를 기반으로하며 개발자 경험을 강조하며 중소형 프로젝트에 적합합니다.

더 나은 PHP 또는 Laravel은 무엇입니까?더 나은 PHP 또는 Laravel은 무엇입니까?Mar 27, 2025 pm 05:31 PM

Laravel은 PHP 기반 프레임 워크이기 때문에 PHP와 Laravel은 직접 비교할 수 없습니다. 1.PHP는 소규모 프로젝트 또는 빠른 프로토 타이핑에 적합하고 간단하고 직접적이기 때문에 적합합니다. 2. Laravel은 대규모 프로젝트 또는 효율적인 개발에 적합하지만 풍부한 기능과 도구를 제공하지만 가파른 학습 곡선을 가지고 있으며 순수한 PHP만큼 좋지 않을 수 있습니다.

Laravel은 프론트 엔드 또는 백엔드입니까?Laravel은 프론트 엔드 또는 백엔드입니까?Mar 27, 2025 pm 05:31 PM

laravelisabackendframeworkbuiltonphp, 디자인 된 forwebapplicationdevelopment.itfocusesonserver-sidelogic, databasemanagement, andapplicationtructure, and canbeintegratedwithfrontendechnologies likevue.jsorreactforfull-stackdevelopment.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구