laravel 5.4 - php artisan migrate命令不起作用

时间:2017-05-11 09:07:07

标签: php mysql laravel artisan

我有四个迁移文件,当我在命令行中运行php artisan migrate时,它会显示:

Nothing to migrate

我也试过了php artisan migrate --database=vcp

Database [vcp] not configured.

我在.env文件中使用了另一个数据库并再次运行php artisan migrate命令:

Migration table created successfully.
Nothing to migrate. 

正在运行

php artisan migrate:refreshphp artisan migrate:resetphp artisan migrate:statusphp artisan migrate --path="database/migrations/migration_file"发送这些消息

Nothing to rollback.
Nothing to migrate.
No migrations found

composer dump-autoload or composer update

没有帮助。

这是我的.env文件

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=vcp
DB_USERNAME=root
DB_PASSWORD=secret

我的2017_05_10_201750_add_columns_to_users.php

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class AddColumnsToUsers extends Migration
   {
       /**
         * Run the migrations.
         *
         * @return void
        */
       public function up()
      {
            Schema::table('users', function (Blueprint $table) {
                $table->string('status')->default('online');
                $table->string('api_token');
           });
       }

     /**
      * Reverse the migrations.
      *
      * @return void
     */
    public function down()
     {
         Schema::table('users', function (Blueprint $table) {
            $table->dropColumn('status');
            $table->dropColumn('api_token');
        });
     }
} 

请帮忙!

2 个答案:

答案 0 :(得分:3)

正如您在上述评论中所述,The changes are done directly on database。然后Nothing to migrate.是正确的。

尝试理解这个概念,迁移包含文件中的表结构,当您运行迁移时,这些表是在数据库中创建的。如果在迁移文件中进行更改,则必须再次运行迁移,以便将这些更改反映回数据库表。所以流程是:

migration file -> database table

database table -> migration file

答案 1 :(得分:0)

这对我有用:

首先,删除所有数据库表,包括迁移表。 其次,AddColumnsToUsers文件的更新方法up()如下:

SQLSetStmtAttr( command, SQL_ATTR_QUERY_TIMEOUT, (SQLPOINTER)timeOut, NULL );

这将检查您的数据库以查看表是否已存在,如果表不存在则创建表,如果表存在,则创建回滚表。 如果有效,请告诉我。