我已经在Macbook Pro(运行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 );
}
我得到“成功!”。
但是随后我将DB::connection()
更改为DB::connection()->getPdo()
,它又什么也不做。还是不相关?
答案 0 :(得分:0)
我把它修好了。在那之后,我会添加很多感叹号,但是我不喜欢它。为什么?
因为问题是我正在使用MySQL,而我应该一直在使用MariaDB。该指南在任何地方都没有提及,因此我仅假设MySQL就足够了。显然不是。如果错误显示出类似这样的信息,那会很好...
答案 1 :(得分:0)
我遇到了一个类似的问题,其中没有任何迁移选项或迁移本身起作用,而且我没有收到命令似乎挂起的错误。在浏览此页面并进行了很多其他尝试后,我从 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;
测试以确保数据库按需要运行:
sudo systemctl status mariadb
如果没有运行:
sudo systemctl start mariadb
有关完整说明,请访问我分享的链接
此外,如果您已经安装了 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
现在一切都应该运行良好,即使在重新启动后也会保留。