php artisan migrate 没有做任何事情

php artisan migrate is not doing anything

我已经在我的 Macbook Pro (运行ning High Sierra (10.13.6)) 上使用 Homebrew 安装了 Laravel 5 和 Valet (v2.0.12)。我已经下载了一个干净的 Laravel 项目 (laravel new blog)。

当我尝试迁移时(位于项目文件夹中,然后使用 php artisan migrate),没有任何反应。终端只是坐在那里什么都不做。命令正在执行,但随后什么也没有。没有错误,没有成功,什么都没有。即使添加 -v 也没有任何结果。

我可以通过命令行进入服务器。我在 .env 文件中输入了正确的凭据。我什至可以 运行 其他 php artisan 命令,但是所有 migrate 命令什么都不做。

我的迁移文件是:

2018_09_04_100609_create_users_table.php

<?php

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

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('users');
    }
}

2018_09_04_100659_create_password-resets_table.php

<?php

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

class CreatePasswordResetsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('password_resets', function (Blueprint $table) {
            $table->string('email')->index();
            $table->string('token');
            $table->timestamp('created_at')->nullable();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('password_resets');
    }
}

更新:

使用以下方法检查数据库连接:

try {
    DB::connection();
    die("success!");
} catch (\Exception $e) {
    die("Could not connect to the database.  Please check your configuration. error:" . $e );
}

我得到了"success!"。

但后来我将 DB::connection() 更改为 DB::connection()->getPdo() 它又什么也没做。或者这不相关?

我修好了。之后我会加很多感叹号,但我不喜欢。为什么?

因为问题是我使用的是 MySQL,而我本应该使用 MariaDB。该指南没有在任何地方提及,所以我只是假设 MySQL 就足够了。显然不是。如果错误显示类似的东西就好了...

我遇到了一个类似的问题,其中 none 的迁移选项或迁移本身有效,但我没有收到任何错误命令似乎挂起。在浏览此页面并进行了许多其他尝试后,我从 MySQL 切换到了 MariaDB。这终于奏效了。

我就是这样做的。在这篇文章之后:- How To Install MariaDB on Ubuntu 20.04(我将它安装到 digitalocean 上的一个 droplet,但我相信这个概念对任何人都有帮助。

安装 MariaDB:

sudo apt update
sudo apt install mariadb-server
sudo mysql_secure_installation

打开 MariaDB 并创建管理员用户:

sudo mariadb
GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit;

测试以确保数据库 运行ning 根据需要:

sudo systemctl status mariadb

如果不是运行宁:

sudo systemctl start mariadb

完整的解释请访问我分享的link

此外,如果您已经安装了 MySQL,则必须将其删除,否则将导致 MariaDB 在您重新启动时失败。我后来遇到了这个问题,当我尝试启动 MariaDB 时它一直挂起,我在浏览器上收到 MYSQL 2002 错误。方法如下 -

sudo systemctl stop mariadb
echo "/usr/sbin/mysqld { }" | sudo tee /etc/apparmor.d/usr.sbin.mysqld
sudo apparmor_parser -v -R /etc/apparmor.d/usr.sbin.mysqld

运行 这些命令应该显示

Removal succeeded for "/usr/sbin/mysqld".

然后,运行这个

sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/usr.sbin.mysqld

最后,重启 mariadb

sudo systemctl start mariadb

现在一切都应该运行良好,即使在重新启动后也会保留。