首頁  >  文章  >  php框架  >  【laravel避坑筆記】laravel報錯的問題42S01 420004 42S22]等...

【laravel避坑筆記】laravel報錯的問題42S01 420004 42S22]等...

藏色散人
藏色散人轉載
2021-02-03 15:42:072274瀏覽

laravel避坑筆記

來源網路

1.Laravel 5.4: Specified key was too long error

原因:從LV 5.4起資料庫預設字元集為utf8mb4(包括了對emojis 的支援)。如果使用的是 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]: Base table or view already exists: 1050

#遷移資料時表已存在,解決方法:

刪除已存在的表,然後重新遷移。

3.PDOException::(“SQLSTATE[42000]: Syntax error or access violation: 1067 Invalid default value for 'published_at'”)


【laravel避坑筆記】laravel報錯的問題42S01 420004 42S22]等...##修改方法一:vim config/database.php

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

修改為:

'mysql' => [
     'driver' => 'mysql',.... ...
     'prefix' => '', 
     'strict' => false, // 修改这里
     'engine' => null,
 ],
【laravel避坑筆記】laravel報錯的問題42S01 420004 42S22]等...
設定可為空的時間戳記:

$table->nullableTimestamps()
設定預設時間戳
$table->timestamps('created_at');// 会生成created_at\updated_at字段


4.PDOException::(“SQLSTATE[42S22]: Column not found : 1054 Unknown column 'created_at' in 'field list'”)

此問題是由於table 遷移時沒有設定預設時間戳字段,但使用的是factory 方法產生seed 數據,可以修改

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############確切地說,這個也不算是坑,因為這個操作本身就是只需執行一次#########但對於新手來說,可能無意間就重複執行多次,而make:migration 時是不會報錯的;###而在執行遷移時問題就來了:##################解決方法就是刪除或修改相同table 的schema 名稱。 ########################5.php artisan db:seed 表格名稱變數複數單數#########這可能和Chinglish 有關,老外習慣把表名寫為複數,所以乾脆預設Model 對應的表名是這個英文單字的複數形式###因此,要在model 裡重寫$table 屬性,如:#######protected $ table='student';#########尋找於網絡,儲存方便自己方便他人#######

以上是【laravel避坑筆記】laravel報錯的問題42S01 420004 42S22]等...的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:learnku.com。如有侵權,請聯絡admin@php.cn刪除