如何在 Lumen 5.5.. 中使用 .env 来使用多个数据库连接?
How to use multiple DB connections using .env in Lumen 5.5..?
我已经安装了 Lumen 5.5 并配置了 .env :
APP_ENV=local
APP_DEBUG=true
APP_KEY=2gh4RD89kWa87clEs6Vhjso3XhsFo3dR
APP_TIMEZONE=UTC
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=XXXXXX
DB_USERNAME=XXXXXX
DB_PASSWORD=XXXXXX
CACHE_DRIVER=memcached
QUEUE_DRIVER=sync
并使用 Eloquent 创建了一个模型:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Test extends Model {
public $timestamps = false;
protected $connection = 'foo';
}
现在官方网站上没有在.env
文件中配置多数据库连接的文档。我的单一连接工作得很好,但现在我需要添加另一个数据库连接详细信息。
到目前为止我已经尝试过:
创建的数据库配置文件 app/config/database.php
包含多个数据库详细信息,但无论我在该文件中写入什么,我的设置都不会受到影响。它仅使用 .env
获取连接详细信息。
试图在 .env
文件中添加多个数据库连接详细信息,例如:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=XXXXXX
DB_USERNAME=XXXXXX
DB_PASSWORD=XXXXXX
FOO_DB_CONNECTION=mysql
FOO_DB_HOST=127.0.0.1
FOO_DB_PORT=3306
FOO_DB_DATABASE=FOOXXXXXX
FOO_DB_USERNAME=FOOXXXXXX
FOO_DB_PASSWORD=FOOXXXXXX
DB_CONNECTION_FOO=mysql
DB_HOST_FOO=127.0.0.1
DB_PORT_FOO=3306
DB_DATABASE_FOO=FOOXXXXXX
DB_USERNAME_FOO=FOOXXXXXX
DB_PASSWORD_FOO=FOOXXXXXX
但它一直给我这个错误:
(1/1) InvalidArgumentException
Database [foo] not configured.
我已经尝试了在 Google 上找到的所有内容。
我在项目中配置的方式(在Lumen 5.4中)如下:
在config/database.php
'pgsql' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', 'db'),
'port' => env('DB_PORT', 5432),
'database' => env('DB_DATABASE', 'service_db'),
'username' => env('DB_USERNAME', 'service_user'),
'password' => env('DB_PASSWORD'),
'charset' => env('DB_CHARSET', 'utf8'),
'prefix' => env('DB_PREFIX', ''),
'schema' => env('DB_SCHEMA', 'public'),
],
'pgsql2' => [
'driver' => 'pgsql',
'host' => env('DB_HOST2', 'db'),
'port' => env('DB_PORT', 5432),
'database' => env('DB_DATABASE2', 'service_db'),
'username' => env('DB_USERNAME2', 'service_user'),
'password' => env('DB_PASSWORD2'),
'charset' => env('DB_CHARSET', 'utf8'),
'prefix' => env('DB_PREFIX', ''),
'schema' => env('DB_SCHEMA2', 'public'),
],
我创建了 2 个具有 2 个不同名称的连接,每个连接都指向 db host/database/username/password/schema 的不同环境变量。如果这没有帮助,post 您的 database.php 文件。
我已经安装了 Lumen 5.5 并配置了 .env :
APP_ENV=local
APP_DEBUG=true
APP_KEY=2gh4RD89kWa87clEs6Vhjso3XhsFo3dR
APP_TIMEZONE=UTC
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=XXXXXX
DB_USERNAME=XXXXXX
DB_PASSWORD=XXXXXX
CACHE_DRIVER=memcached
QUEUE_DRIVER=sync
并使用 Eloquent 创建了一个模型:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Test extends Model {
public $timestamps = false;
protected $connection = 'foo';
}
现在官方网站上没有在.env
文件中配置多数据库连接的文档。我的单一连接工作得很好,但现在我需要添加另一个数据库连接详细信息。
到目前为止我已经尝试过:
创建的数据库配置文件
app/config/database.php
包含多个数据库详细信息,但无论我在该文件中写入什么,我的设置都不会受到影响。它仅使用.env
获取连接详细信息。试图在
.env
文件中添加多个数据库连接详细信息,例如:DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=XXXXXX DB_USERNAME=XXXXXX DB_PASSWORD=XXXXXX
FOO_DB_CONNECTION=mysql FOO_DB_HOST=127.0.0.1 FOO_DB_PORT=3306 FOO_DB_DATABASE=FOOXXXXXX FOO_DB_USERNAME=FOOXXXXXX FOO_DB_PASSWORD=FOOXXXXXX
DB_CONNECTION_FOO=mysql DB_HOST_FOO=127.0.0.1 DB_PORT_FOO=3306 DB_DATABASE_FOO=FOOXXXXXX DB_USERNAME_FOO=FOOXXXXXX DB_PASSWORD_FOO=FOOXXXXXX
但它一直给我这个错误:
(1/1) InvalidArgumentException
Database [foo] not configured.
我已经尝试了在 Google 上找到的所有内容。
我在项目中配置的方式(在Lumen 5.4中)如下:
在config/database.php
'pgsql' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', 'db'),
'port' => env('DB_PORT', 5432),
'database' => env('DB_DATABASE', 'service_db'),
'username' => env('DB_USERNAME', 'service_user'),
'password' => env('DB_PASSWORD'),
'charset' => env('DB_CHARSET', 'utf8'),
'prefix' => env('DB_PREFIX', ''),
'schema' => env('DB_SCHEMA', 'public'),
],
'pgsql2' => [
'driver' => 'pgsql',
'host' => env('DB_HOST2', 'db'),
'port' => env('DB_PORT', 5432),
'database' => env('DB_DATABASE2', 'service_db'),
'username' => env('DB_USERNAME2', 'service_user'),
'password' => env('DB_PASSWORD2'),
'charset' => env('DB_CHARSET', 'utf8'),
'prefix' => env('DB_PREFIX', ''),
'schema' => env('DB_SCHEMA2', 'public'),
],
我创建了 2 个具有 2 个不同名称的连接,每个连接都指向 db host/database/username/password/schema 的不同环境变量。如果这没有帮助,post 您的 database.php 文件。