【问题标题】:How to make artisan migrate command use database.php instead of .env如何使工匠迁移命令使用 database.php 而不是 .env
【发布时间】:2016-10-14 14:21:49
【问题描述】:

默认情况下,Laravel 的artisan migrate 命令使用 .env 文件来加载数据库配置,但是如何让它查看 database.php 而不是 .env 文件来加载数据库连接信息?

如果我从 .env 文件中删除 db 凭据,则会出现以下错误:

[无效参数异常] 数据库 [mysql] 未配置。

虽然 database.php 有正确的连接细节。

【问题讨论】:

  • 你的意思是config/database.php 你的数据库连接细节是硬编码的吗?它应该是look like this,其中配置文件是从.env 文件加载的。

标签: laravel migration laravel-5.2 laravel-artisan


【解决方案1】:

您可以使用--database指定要使用的数据库连接:

php artisan migrate --database=pgsql
php artisan migrate --database=mysql
php artisan migrate --database=sqlite

【讨论】:

    【解决方案2】:

    从您的 .env

    中删除它
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=new
    DB_USERNAME=root
    DB_PASSWORD=''
    

    转到配置文件夹中的 database.php

    并编辑此发件人

    'default' => env('DB_CONNECTION', 'mysql'),
    

    'default' => 'mysql',
    

    如果您正在使用其他数据库(例如 sqlite 或 sqlserv,请更改默认值)

    并且不要忘记更改凭据

    mysql 示例:

    'mysql' => [
                'driver'    => 'mysql',
                'host'      => 'localhost',
                'database'  => 'database',
                'username'  => 'username',
                'password'  => 'password',
                'charset'   => 'utf8',
                'collation' => 'utf8_unicode_ci',
                'prefix'    => '',
                'strict'    => false,
                'engine'    => null,
            ],
    

    简而言之:您需要从您的 .env 文件中删除与数据库相关的变量,并将您的 database.php 中的 env('DB_HOST', 'localhost') 或任何类似内容更改为 '' 之间的简单文本

    【讨论】:

    • 我假设 database.php 将是一个将被版本控制的文件,我认为将凭据保存在这些文件中并不是一个好主意,因为必须在每个环境中编辑它们(本地,登台和生产),因此我相信从环境中阅读它们是更好的主意。我过去在 laravel 社区上读过这篇文章,根据我自己的经验,我同意他们的看法。
    • 是的,我知道了,我刚刚回答了你的问题!当你按照我说的做,并使用 php artisan migrate 时,它​​将使用 database.php 而不是 .env
    猜你喜欢
    • 2013-02-05
    • 2021-07-16
    • 2017-07-29
    • 1970-01-01
    • 2016-07-08
    • 2018-09-26
    • 1970-01-01
    • 2015-04-15
    • 2016-12-03
    相关资源
    最近更新 更多