ホームページ  >  記事  >  PHPフレームワーク  >  【Laravel ピット回避メモ】Laravel エラー報告問題 42S01 420004 42S22】etc...

【Laravel ピット回避メモ】Laravel エラー報告問題 42S01 420004 42S22】etc...

藏色散人
藏色散人転載
2021-02-03 15:42:072272ブラウズ

次のコラムでは、laravelのエラー報告の問題42S01 420004 42S22]などを紹介します...必要な友人の役に立てば幸いです。

laravel の落とし穴回避メモ

ソース ネットワーク

1.Laravel 5.4:指定されたキーが長すぎますエラー

原因: LV 5.4 以降、データベースのデフォルトの文字セットは utf8mb4 (絵文字のサポートを含む) です。 MySQL v5.7.7 以降を使用している場合は、変更する必要はありません。 MySQL データベースの以前のバージョン (MariaDB を含む) を使用する子供用の靴は、次のように変更できます。ファイル /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,
     ],
  • 変更可能な時間を設定します。空のスタンプ:

    $table->nullableTimestamps()

    デフォルトのタイムスタンプを設定します

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

    ##4.PDOException::(“SQLSTATE[42S22]: 列が見つかりません: 1054 Unknown columns 'created_at' in 'field list'")

    この問題は、テーブルの移行中にデフォルトのタイムスタンプ フィールドが設定されないことが原因ですが、ファクトリ メソッドはシード データの生成に使用されます。修正できます。

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

    make:migration

    正確には、これは次のとおりです。この操作は 1 回だけ実行する必要があるため、落とし穴ではありません。ただし、初心者の場合、意図せずに複数回繰り返す可能性があり、移行時にエラーは報告されません。移行の実行時に問題が発生しました。

    解決策は、同じテーブルのスキーマ名を削除または変更することです。

    【Laravel ピット回避メモ】Laravel エラー報告問題 42S01 420004 42S22】etc...

    ##5.php 職人 db:seed テーブル名が複数形および単数形になる
    【Laravel ピット回避メモ】Laravel エラー報告問題 42S01 420004 42S22】etc...

    これは次のことに関連している可能性があります。チングリッシュの場合、外国人はテーブル名を複数形で書くことに慣れているため、英語の単語
    の複数形としてモデルに対応するテーブル名をデフォルトで使用します。したがって、$table 属性はモデル内で次のように書き換える必要があります。 :

    protected $ table='student';インターネットで検索し、自分や他の人のために保存してください。

    以上が【Laravel ピット回避メモ】Laravel エラー報告問題 42S01 420004 42S22】etc...の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

  • 声明:
    この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。