artisan migrate命令不会迁移,不会产生任何输出

时间:2017-01-17 16:50:54

标签: laravel laravel-migrations

我正在研究我的第一个Laravel项目。我正在尝试创建数据库迁移并使用artisan migrate运行它们。迁移未运行,命令不返回任何输出。

关键事实:

  • 我使用artisan make:migration使用正确的文件路径创建迁移文件。
  • 我第一次运行该命令时,它在数据库中创建了迁移表。所以我知道它正在打击数据库,至少做正确的事情。
  • database/migrations文件夹中没有文件时,我会收到Nothing to migrate命令。
  • 除了这两条消息之外,我从命令中完全没有收到任何输出。没有错误,没有。此外,数据库中的迁移表中没有记录。
  • artisan migrate --verbose也不会返回任何输出。
  • storage/logs上的权限为drwxrwxrwx.我是该目录的所有者。
  • storage/logs/laravel.log不包含任何与迁移有关的内容。

我在下面列出了第一次迁移的代码。

这个问题与this question的不同之处在于前一个用户没有使用正确的命名约定。该问题包含有关迁移过程的详细答案。这没有用,因为我没有得到任何输出。在我输入这个问题时,我也回顾了SO提出的问题。

也许我的配置不正确?我需要做些什么来实现这些迁移?

2017_01_17_151638_user.php

<?php

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

// Create the classes associated with user management.

class UserMigration extends Migration
{
    public function up()
    {
      Schema::create('tblUser', function (Blueprint $table) {
          $table->increments('id');
          $table->string('name');
          $table->string('email')->unique();
          $table->string('password');
          $table->rememberToken();
          $table->timestamps();
      });

      Schema::create('tblUserPasswordReset', function (Blueprint $table) {
          $table->string('email')->index();
          $table->string('token')->index();
          $table->timestamp('create_date')->nullable();
      });
    }

    public function down()
    {
      Schema::dropIfExists('tblUserPasswordReset');
      Schema::dropIfExists('tblUser');
    }
}

11 个答案:

答案 0 :(得分:4)

php artisan migrate:rollback

然后尝试

php artisan migrate

Laravel跟踪已经运行的迁移,所以如果你以前运行它,它知道并且不会再次执行它,除非你回滚它并且我遇到这个直到我将它们回滚然后再次运行迁移

答案 1 :(得分:1)

对我来说,让它工作的唯一方法是重新启动mysql服务(在OSX中,从未在debian上看到过这个)。

答案 2 :(得分:0)

仔细检查以下内容:

  • 实际上正在database/migrations
  • 中创建迁移文件
  • 仔细检查日志文件和目录是否可写
  • 确保database/migrations文件夹的权限是laravel install附带的默认权限
  • 双击laravel.log文件

答案 3 :(得分:0)

  • 首先检查您的服务Apache和Mysql运行,然后转到您的 本地主机/ phpmyadmin的。
  • 检查您的终端或cmd您是否在正确的文件路径中 目录。
  • 然后写 php artisan migrate
  • 如果有什么东西让我知道如果没有转到你的laravel.log 细节

答案 4 :(得分:0)

尝试:composer dump-autoload

然后再次运行php artisan migrate

可能的问题:https://stackoverflow.com/a/33974248/7377984

答案 5 :(得分:0)

不要错过将迁移添加到DatabaseSeeder.php。请参阅此文档Calling Additional Seeders

在DatabaseSeeder中添加:

$this->call(UserMigration::class);

希望它有所帮助。

答案 6 :(得分:0)

这个确切的问题没有列出的解决方案改变任何东西。在这种情况下适用于我的未提及的解决方案是

sc queryex vmms : note pid 

taskkill /f /pid pidnumber from above command

我已经彻底消灭了所有东西并且从头开始,忘了重新创作作曲家并安装一切。

答案 7 :(得分:0)

我能够重现迁移无错误但尚未迁移的情况的唯一方法是在配置中未指定数据库模式名称以及连接名称。

.env 文件中,确保以下设置具有值:

DB_CONNECTION=master
DB_DATABASE=my_databse_name

或者 /config/database.php

'default' => env('DB_CONNECTION', 'master'),

'connections' => [

        'master' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'my_databse_name'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => 'cms_',
            'strict' => true,
            'engine' => null,
        ],
],

答案 8 :(得分:0)

我很确定我已经解决了这个问题。

我在MySQL中创建了一个新用户,并通过mysql shell为所有数据库分配了所有权限:

CREATE USER 'user1'@'localhost' IDENTIFIED BY 'password';

GRANT ALL ON *.* to 'user1'@'localhost';

不要忘记在.env中更改连接信息:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=user1
DB_PASSWORD=password

答案 9 :(得分:0)

本月初我遇到了这个问题,我所做的是我仔细检查了对mysql服务器的配置,以重新启动mysql服务器和IDE本身

答案 10 :(得分:0)

我认为迁移的类名应该是 User 而不是 UserMigration 因为 laravel 使用文件名查找类,而您的文件有一个 slug 用户而不是用户迁移。