【发布时间】:2017-06-23 20:27:52
【问题描述】:
我有 2 个 Laravel 应用程序在同一台服务器上运行。服务器是 Apache 2.4,我设置了虚拟主机来为不同域上的每个应用程序提供服务。
第一个应用程序是一个 API,它的 .env 文件是这样设置的:
APP_ENV=production
APP_KEY=YYYYYYYYYYYYYYYYYY
APP_DEBUG=false
APP_LOG_LEVEL=debug
APP_URL=https://notify.mysite.com
APP_DOMAIN=notify.mysite.com
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=notify
DB_USERNAME=YYYYYYYYYYYYYYYYYY
DB_PASSWORD=YYYYYYYYYYYYYYYYYY
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
第二个应用程序是一个 UI,它利用了第一个应用程序的 API。它的 .env 文件是这样设置的:
APP_ENV=local
APP_KEY=XXXXXXXXXXXXXX
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=https://asapps.mysite.com
APP_DOMAIN=asapps.mysite.com
APP_VERSION=1
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=asapps
DB_NOTIFY_DATABASE=notify
DB_FLIGHT_DATABASE=flights
DB_USERNAME=XXXXXXXXXXXXXX
DB_PASSWORD=XXXXXXXXXXXXXX
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
我可以从我的 Swagger 编辑器、Postman 和其他服务器向我的 API 发送消息,并且一切正常。
我的第二个应用程序本身也可以正常工作。
但是,如果我的第二个应用程序向 API 发送请求,则 API 应用程序会抛出此错误:
带有消息“SQLSTATE[42S02] 的异常“PDOException”:未找到基表或视图:1146 表“asapps.preprocessor_config”不存在” 在 C:\notify\vendor\laravel\framework\src\Illuminate\Database\Connection.php:332
WTH?
API 的数据库设置为 DB_DATABASE=notify,当我从其他服务器发送消息时,它确实正确使用了该连接。那么它为什么要尝试使用第二个应用程序的数据库 当我从该应用程序调用 API 时连接???它几乎就像它正在缓存数据库连接并试图继续使用同一个......我该如何阻止它?
表 'asapps.preprocessor_config' 不存在'
【问题讨论】:
-
更改您的 config/database.php 将第二个应用程序中的 DB_DATABASE 更改为 DB_DATABASE2 并更新您的 .env 文件以引用 DB_DATABASE2 并查看是否可以解决您的问题。
-
@SariYono 同样的问题 :(
标签: php mysql laravel laravel-5 environment-variables