>PHP 프레임워크 >Laravel >[라라벨 피트 회피 주의사항] 라라벨 오류 보고 문제 42S01 420004 42S22] 기타...

[라라벨 피트 회피 주의사항] 라라벨 오류 보고 문제 42S01 420004 42S22] 기타...

藏色散人
藏色散人앞으로
2021-02-03 15:42:072306검색

Laravel 함정 방지 노트

소스 네트워크

1.Laravel 5.4: 지정된 키가 너무 깁니다. 오류

이유: LV 5.4부터 데이터베이스의 기본 문자 집합은 utf8mb4입니다 (쌍 이모티콘 지원 포함). MySQL v5.7.7 이상을 사용하는 경우 수정이 필요하지 않습니다. MariaDB를 포함하여 이전 버전의 MySQL 데이터베이스를 사용하는 아동용 신발은 다음과 같이 수정하고 /project/app/Providers/AppServiceProvider.php

use Illuminate\Support\Facades\Schema; // 注意要引入命名空间

 public function boot()
    {
        Schema::defaultStringLength(191); // 针对 早期 mysql 数据迁移
    }
파일을 수정한 다음 마이그레이션 명령을 재사용할 수 있습니다:
php artisan migrate


2.SQLSTATE [42S01]: 기본 테이블 또는 뷰가 이미 존재합니다: 1050

데이터 마이그레이션 시 테이블이 이미 존재합니다.해결책:

기존 테이블을 삭제한 후 다시 마이그레이션하세요.

3.PDOException::("SQLSTATE[42000]: 구문 오류 또는 액세스 위반: 1067 'published_at'에 대한 잘못된 기본값")

수정 방법 1: vim config/database.php

'mysql' => [
     'driver' => 'mysql',.... ...
     'prefix' => '', 
     'strict' => true, // 修改这里
     'engine' => null,
 ],
수정됨:

'mysql' => [
     'driver' => 'mysql',.... ...
     'prefix' => '', 
     'strict' => false, // 修改这里
     'engine' => null,
 ],
  • null 허용 타임스탬프 설정:
$table->nullableTimestamps()

기본 타임스탬프 설정

$table->timestamps('created_at');// 会生成created_at\updated_at字段

4.PDOException::("SQLSTATE[42S22]: 열을 찾을 수 없음: 1054 알 수 없는 열 ' '필드 목록'의 'created_at'")

이 문제는 테이블 마이그레이션 중에 기본 타임스탬프 필드가 설정되지 않았지만 수정 가능한 시드 데이터를 생성하는 데 팩토리 메소드가 사용되었기 때문에 발생합니다

public function up()
    {   
      Schema::create('posts', function (Blueprint $table) {
      $table->increments('id');
      $table->string('slug')->unique();
      $table->string('title');
      $table->text('content');
      $table->timestamps(); // 添加这行
      }); }

Repeat make:migration

정확하게 말하면 작업 자체는 한 번만 수행하면 되기 때문에 이는 함정이 아닙니다.그러나 초보자의 경우 의도하지 않게 여러 번 반복될 수 있으며 다음을 수행합니다. 마이그레이션은 오류가 보고되지 않습니다.

마이그레이션을 수행할 때 문제가 발생합니다.


해결 방법은 동일한 테이블의 스키마 이름을 삭제하거나 수정하는 것입니다.

[라라벨 피트 회피 주의사항] 라라벨 오류 보고 문제 42S01 420004 42S22] 기타...


[라라벨 피트 회피 주의사항] 라라벨 오류 보고 문제 42S01 420004 42S22] 기타...5.php artisan db:seed 테이블 이름이 복수형 단수형으로 변경됨

이것은 Chinglish와 관련이 있을 수 있습니다. 외국인들은 테이블 이름을 복수형으로 쓰는 데 익숙하므로 단순히 for라는 영어 단어를 기본값으로 사용합니다. 의 복수형에 해당하는 테이블 이름입니다. 따라서 다음과 같이 모델의 $table 속성을 다시 작성해야 합니다. protected $table='student';

인터넷에서 찾아 저장합니다. 자신의 편의를 위해, 다른 사람의 편의를 위해

위 내용은 [라라벨 피트 회피 주의사항] 라라벨 오류 보고 문제 42S01 420004 42S22] 기타...의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 learnku.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제