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
现在一切都应该运行良好,即使在重新启动后也会保留。
我已经在我的 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
现在一切都应该运行良好,即使在重新启动后也会保留。