Je suis nouveau sur Laravel
et je suis Laravel Documentations
ainsi que quelques vidéos tutorielles. Cependant, j'utilise ce code php artisan migrate
dans mon CMD Prompt
local et il ne crée pas Database Table
dans phpmyadmin
. Il y a quelques autres sujets similaires liés à ceci dans stackoverflow
mais aucun n'a résolu mon problème. S'il vous plaît ne marque pas ce doublon.
Ok, ça va comme ça. Je lance ce code
php artisan make:migration create_student_table --create=student
et le nouveau fichier est créé dans le dossier de migration en tant que 2016_04_08_061507_create_student_table.php
Puis, dans ce fichier, je lance cette code
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateStudentTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('student', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->string('name', 20);
$table->string('email', 255);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('student');
}
}
Puis, dans cmd
, je lance php artisan migrate
mais il n’a pas créé la table student
. Au lieu de cela, il montre ce message
[PDOException] SQLSTATE [42S01]: La table ou la vue de base existe déjà: 1050 'utilisateurs' de la table existent déjà
J'ai créé la table users
il y a quelques jours en utilisant une méthode similaire à celle décrite ci-dessus. Mais la nouvelle table student
n'est pas en cours de création. Est-ce que je manque quelque chose ici? Merci d'avance.
Cela signifie que Laravel tente d'exécuter d'abord la migration de la table users
. Si vous êtes en développement et que vous n'avez pas besoin de conserver vos données, vous pouvez simplement supprimer la table users
puis exécuter php artisan migrate
.
MODIFIER
déplacer déjà effectué les migrations à partir du dossier database\migrations, avant d'exécuter de nouveaux fichiers de migration. après avoir exécuté les nouvelles migrations revenir dans les migrations passées où il était avant.
Cela signifie que vous avez déjà exécuté php artisan migrate
une fois et que la table est déjà présente dans la base de données. Parfois, vous devez faire un composer dump-autoload
si l'artisan ment.
vous devez donc soit annuler la dernière modification avant d’éditer et d’exécuter php artisan migrate
. pour revenir en arrière, vous pouvez utiliser php artisan migrate:rollback
De même, si vous souhaitez supprimer toutes les modifications, vous pouvez exécuter php artisan migrate:reset
.
Il existe php artisan migrate --force
pour forcer l'exécution forcée de la migration.
Après avoir suivi toutes ces étapes et si vous ne pouvez pas exécuter la migration, si c'est l'environnement de développement, supprimez à nouveau la base de données create database et exécutez php artisan migrate
.
J'ai eu un problème similaire avec ma configuration Laravel (mac os Sierra 10.12.16) et l'utilisation de MAMP avec atome et je n'ai pas trouvé de solution définitive avant d'avoir suivi les étapes suivantes.
Lors de la configuration de mon environnement local, l'utilisation des étapes suivantes a permis d'éviter les problèmes de migration ultérieurement,
IN AppServiceProvider.php add the following code:
use Illuminate\Support\Facades\Schema;
public function boot()
{
//
Schema::defaultStringLength(191);
}
then in database.php:
'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
THEN FINALLY IN .env:
DB_CONNECTION=mysql
DB_Host=localhost
DB_PORT=
DB_DATABASE=hackable
DB_USERNAME=root
DB_PASSWORD=root
J'espère que cela aide quelqu'un, car il m'a fallu des jours pour enfin configurer correctement :)
Avez-vous un droit de migration des utilisateurs? Si c'est le cas, insérez votre table de création utilisateur à l'intérieur de:
if(!Schema::hasTable('users')) ...
Votre base de données a déjà cette table, il suffit de la laisser et de la laisser créer par artisan.
Parfois, si vous utilisez le serveur MAMP, vous pouvez obtenir cette erreur en raison de la connectivité de la base de données. C'est à cause du numéro de port, généralement lors de l'utilisation de MAMP, le numéro de port de la base de données mysql est 8889. Vous devez le modifier dans votre configuration et exécuter votre commande artisan.