我有四个迁移文件,当我在命令行中运行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:refresh
,php artisan migrate:reset
,php artisan migrate:status
,php 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');
});
}
}
请帮忙!
答案 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 );
这将检查您的数据库以查看表是否已存在,如果表不存在则创建表,如果表存在,则创建回滚表。 如果有效,请告诉我。