Heim >PHP-Framework >Laravel >[Hinweise zur Vermeidung von Laravel-Gruben] Laravel-Fehlermeldeproblem 42S01 420004 42S22] usw.

[Hinweise zur Vermeidung von Laravel-Gruben] Laravel-Fehlermeldeproblem 42S01 420004 42S22] usw.

藏色散人
藏色散人nach vorne
2021-02-03 15:42:072331Durchsuche
Kinderschuhe, die frühere Versionen von MySQL-Datenbanken (einschließlich MariaDB) verwenden, können wie folgt geändert werden: Ändern Sie die Datei /project/app/Providers/AppServiceProvider.php

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

 public function boot()
    {
        Schema::defaultStringLength(191); // 针对 早期 mysql 数据迁移
    }
und verwenden Sie dann den Migrationsbefehl erneut:
php artisan migrate

2.SQLSTATE [42S01]: Basistabelle oder -ansicht existiert bereits: 1050Die Tabelle existiert bereits beim Migrieren von Daten,

Lösung:

Löschen Sie die vorhandene Tabelle und migrieren Sie sie dann erneut.

3.PDOException::("SQLSTATE[42000]: Syntaxfehler oder Zugriffsverletzung: 1067 Ungültiger Standardwert für 'published_at'")

Änderungsmethode eins: vim config/database.php

'mysql' => [
     'driver' => 'mysql',.... ...
     'prefix' => '', 
     'strict' => true, // 修改这里
     'engine' => null,
 ],
Geändert in:
'mysql' => [
     'driver' => 'mysql',.... ...
     'prefix' => '', 
     'strict' => false, // 修改这里
     'engine' => null,
 ],
Setzen Sie einen nullbaren Zeitstempel:

$table->nullableTimestamps()

Setzen Sie einen Standard-Zeitstempel
$table->timestamps('created_at');// 会生成created_at\updated_at字段

4.PDOException::("SQLSTATE[42S22]: Spalte nicht gefunden: 105 4 Unbekannte Spalte ' erstellt_at' in 'Feldliste'")Dieses Problem ist auf die Tatsache zurückzuführen, dass das Standard-Zeitstempelfeld während der Tabellenmigration nicht festgelegt wird, sondern die Factory-Methode zum Generieren von Startdaten verwendet wird, die geändert werden können

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

    Um genau zu sein, ist dies keine Gefahr, da der Vorgang selbst nur einmal durchgeführt werden muss

    Aber für Anfänger kann es sein, dass er mehrmals unbeabsichtigt wiederholt wird und Folgendes bewirkt: Bei der Migration wird kein Fehler gemeldet. Das Problem tritt bei der Migration auf:

    Die Lösung besteht darin, den Schemanamen derselben Tabelle zu löschen oder zu ändern.

    5.php artisan db:seed Tabellenname in Plural Singular geändert

    Dies hängt möglicherweise mit Chinglish zusammen. Ausländer sind es gewohnt, Tabellennamen im Plural zu schreiben, daher verwenden sie standardmäßig das englische Wort für Der Tabellenname entspricht dem Modell. Daher müssen Sie das $table-Attribut im Modell umschreiben, z. B.:

    protected $table='student';

    Suchen Sie es im Internet und speichern Sie es es für Ihre eigene Bequemlichkeit und für die Bequemlichkeit anderer

    Das obige ist der detaillierte Inhalt von[Hinweise zur Vermeidung von Laravel-Gruben] Laravel-Fehlermeldeproblem 42S01 420004 42S22] usw.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

  • Stellungnahme:
    Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen