【问题标题】:Laravel not taking default DB_CONNECTION value from env fileLaravel 没有从 env 文件中获取默认的 DB_CONNECTION 值
【发布时间】:2020-02-18 11:46:12
【问题描述】:

我在生产和开发环境中使用不同的 mongo db。

我有不同的连接配置,因为 mongodb(生产连接名称)在 mongo atlas 集群上,所以它使用 dsn 连接,但是 mongodb1(开发连接名称)安装在本地,所以我使用主机和端口连接它。

我想为不同的环境使用不同的数据库连接,所以我在 env 文件中设置了不同的 DB_CONNECTION 在这两种情况下。 因为我的作品是

     DB_CONNECTION=mongodb

为了发展它

     DB_CONNECTION=mongodb1

在我的 config/database.php 文件中
'default' => env('DB_CONNECTION', 'mysql'),

在我的连接数组中

    'mongodb' => [
        'driver' => 'mongodb',
        'dsn' => env('MONGO_DB_DSN'),
        'database' => env('MONGO_DB_DATABASE', 'uspl'),
        'username' => env('MONGO_DB_USERNAME', 'uspl'),
        'password' => env('MONGO_DB_PASSWORD', 'unfoldingskies'),
        'options' => array(
            'db' => 'uspl'
        )
    ],

    'mongodb1' => [
        'driver' => 'mongodb',
        'host' => env('MONGO_DB_HOST', 'localhost'),
        'port' => env('MONGO_DB_PORT', 27017),
        'database' => env('MONGO_DB_DATABASE'),
        'options' => []
    ],

我的开发环境出现错误-> 未配置数据库 [mongodb]。在文件中
/var/www/html/devBackend/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php 在第 152 行

我尝试了 php artisan config:clear、cache:clear、composer dump-autoload 但没有任何效果

【问题讨论】:

    标签: linux laravel mongodb amazon-web-services


    【解决方案1】:

    Laravel 不支持开箱即用的 MongoDB,因此您需要使用 3rd 方包才能使用它。

    As of this writing Laravel has the following database drivers:

    • MySQL 5.6+(版本策略)
    • PostgreSQL 9.4+(版本政策)
    • SQLite 3.8.8+
    • SQL Server 2017+(版本策略)

    我在网上快速搜索this 3rd party package.

    Laravel MongoDB

    一个支持 MongoDB 的 Eloquent 模型和查询构建器,使用 原始的 Laravel API。这个库扩展了原来的 Laravel 类,所以它使用完全相同的方法。

    【讨论】:

    • 是的,我也在使用相同的 jenssegers 包,我的问题是我想在生产环境中使用 mongodb 配置,在开发环境中使用 mongodb1 配置,如果我通过 'mongodb' 使用它,这两种配置都可以正常工作database.php 文件中的连接数组,但是如果我同时在连接数组中有 mongodb 和 mongodb1,即使环境文件将 mongodb1 作为 DB_CONNECTION 变量,mongodb1 也不起作用
    • 当发生这种情况时,您会收到错误 Database [mongodb] not configured.?你的环境文件中MONGO_DB_DATABASE 的值是多少?
    • 是的,这就是错误,它在生产环境中是 uspl,在开发环境中是 usplDev。
    • 可能是包的限制。使用 mongodb 连接名称可能是硬连线的,如果您更改它,它就无法正常工作。
    • 是的,但如果我在 env DB_CONNECTION 中使用 customName 并将其添加到连接数组中,它也不起作用。也许我们不能向 laravel 添加自定义数据库连接。
    猜你喜欢
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 2015-10-08
    • 2022-12-26
    • 2014-12-09
    • 2021-03-29
    相关资源
    最近更新 更多