Ce qui suit est la colonne Tutoriel Laravel pour vous présenter les problèmes de rapport d'erreurs Laravel 42S01 420004 42S22] etc... J'espère que cela sera utile aux amis qui j'en ai besoin !
Notes pour éviter les pièges de Laravel
Réseau source
1.Laravel 5.4 : La clé spécifiée était une erreur trop longue
Cause : à partir de LV 5.4, le jeu de caractères par défaut de la base de données est utf8mb4 (y compris la prise en charge des emojis). Si vous utilisez MySQL v5.7.7 ou supérieur, aucune modification n'est requise.
Les chaussures pour enfants qui utilisent des versions antérieures des bases de données MySQL (y compris MariaDB) peuvent être modifiées comme ceci. Modifiez le fichier /project/app/Providers/AppServiceProvider.php
use Illuminate\Support\Facades\Schema; // 注意要引入命名空间 public function boot() { Schema::defaultStringLength(191); // 针对 早期 mysql 数据迁移 }
puis réutilisez-le. la commande de migration :
php artisan migrate
2.SQLSTATE[42S01] : La table ou la vue de base existe déjà : 1050
La table existe déjà lors de la migration data,
Solution :
Supprimez la table existante puis migrez-la à nouveau.
3.PDOException ::("SQLSTATE[42000] : Erreur de syntaxe ou violation d'accès : 1067 Valeur par défaut non valide pour 'published_at'")
'mysql' => [ 'driver' => 'mysql',.... ... 'prefix' => '', 'strict' => true, // 修改这里 'engine' => null, ],
est modifiée en :
'mysql' => [ 'driver' => 'mysql',.... ... 'prefix' => '', 'strict' => false, // 修改这里 'engine' => null, ],
Définir l'horodatage nullable :
$table->nullableTimestamps()
Définir l'horodatage par défaut
$table->timestamps('created_at');// 会生成created_at\updated_at字段
4.PDOException::("SQLSTATE[42S22] : Colonne introuvable : 1054 Colonne inconnue 'created_at' dans 'field list'")
Ce problème est dû au fait que le champ d'horodatage par défaut n'est pas défini lors de la migration de la table, mais la méthode d'usine est utilisée pour générer des données de départ. Vous pouvez modifier
public function up() { Schema::create('posts', function (Blueprint $table) { $table->increments('id'); $table->string('slug')->unique(); $table->string('title'); $table->text('content'); $table->timestamps(); // 添加这行 }); }
et répéter make:migration
Pour être précis, ce n'est pas le cas. un piège, car cette opération Il ne doit être exécuté qu'une seule fois
Mais pour les novices, il peut être exécuté plusieurs fois involontairement, et aucune erreur ne sera signalée lors de la création de:migration;
Il y a un problème lors de l'exécution de la migration Le voici :
La solution est de supprimer ou de modifier le nom de schéma de la même table.
5.php artisan db:seed le nom de la table devient pluriel et singulier
Cela peut être lié en Chinglish, les étrangers sont habitués à écrire les noms de table au pluriel, ils utilisent donc simplement par défaut le nom de table correspondant au modèle comme forme plurielle de ce mot anglais
Par conséquent, l'attribut $table doit être réécrit dans le modèle, tel que as :
protected $ table='student';
Recherchez sur Internet et enregistrez-le pour votre commodité et pour les autres
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!