我对laravel和monogo db的初学者都很新。我一直试图在我的laravel项目中连接mongodb集群的mongodb图集。 但是,当我尝试迁移laravel迁移文件时,即使我将默认连接更改为mongodb,也显示错误,指出mysql错误。 谁能告诉我如何解决这个问题并将当前项目迁移到mongodb?
PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=homestead", "homestead", "secret", [])
1 PDOException::("SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.
")
C:\Users\admin\Desktop\test\test\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php : 68
C:\Users\admin\Desktop\test\test\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php : 68
由于laravel不允许mongodb开箱即用,所以我使用的是mongodb包https://github.com/jenssegers/laravel-mongodb
我还想提一下,根据文档,我在我的php中安装了monngodb。我可以在phpinfo()
页面上看到mongodb的确认。我的设置如下:
我的.env
DB_CONNECTION="mongodb"
DB_MONGO_PORT=27017
DB_MONGO_DATABASE=test
DB_MONGO_DSN="mongodb+srv://<USERNAME>:<PASSWORD>@cluster0-
***.mongodb.net/test"
我的config / database.php
'default' => env('DB_CONNECTION', 'mongodb'),
'mongodb' => [
'driver' => 'mongodb',
'dsn' => env('DB_MONGO_DSN'),
'database' => env('DB_MONGO_DATABASE'),
],
我的用户迁移文件
use Illuminate\Support\Facades\Schema;
//use Illuminate\Database\Schema\Blueprint;
use Jenssegers\Mongodb\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration
{
protected $connection = 'mongodb';
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();
});
}
public function down()
{
Schema::dropIfExists('users');
}
}
答案 0 :(得分:2)
将DB_CONNECTION=mongodb
放在 .ENV 文件中
同时从 MOGN0_DSN 中删除引号,并确保调用php artisan config:cache
转储自动加载的配置文件
答案 1 :(得分:1)
尝试.env文件
DB_CONNECTION=mongodb
没有qoutes
答案 2 :(得分:1)
我不确定为什么它没有使用默认连接设置为mongodb,但我之前遇到过这个问题。我遇到的问题是迁移中的onclick="showDiv('detailInformation2')"
属性是无用的。我不得不做以下事情;
connection
Schema::connection($this->connection)->create('collections', function (Blueprint $table) {
$table->increments('id');
$table->index('slug');
$table->index('world_id');
$table->unique(['world_id', 'slug']);
$table->timestamps();
});
应该适合你。
答案 3 :(得分:0)