- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
(永远不要在非常累的时候编写软件。否则你会在互联网上询问非常好的人来回答非常明显的问题,如果你不累的话你就不会问,因为原则问题是.. .琐碎。哈哈。所以,在这种情况下,我忽略了对备用数据库的连接属性进行唯一重命名。唉....)
问题:我无法让 Laravel 识别对不同连接(数据库)的请求。
据我所知,我已经正确配置了.ENV、config/database.php、config/app.php,并添加了$connection=myconnection到我的模型。
但无论我做什么 Laravel/Eloquent/Doctrine 都会忽略所有让某些模型使用默认(公共(public))数据库,而其他模型使用 Multi-Tenancy 数据库的尝试。
让我们区分物理服务器、在该服务器上运行的数据库服务器实例、该实例中的数据库以及该数据库中的 Multi-Tenancy 。
我应该能够通过在运行时修改连接来使用任何这些配置:
我怀疑缺乏文档,但包含 Eloquent /模型功能“$connection=connection_configuration”意味着存在一个我不直觉的相当明显的解决方案。 (而且我没有几天的空闲时间来深入研究源代码并弄清楚那里发生了什么。)
感谢您的帮助。-干杯
===环境文件===
DB_CONNECTION=crunch
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=crunch
DB_USERNAME=myapp
DB_PASSWORD=Nonsense!Talk
DB_CONNECTION=munchdata
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=munchdata
DB_USERNAME=myapp
DB_PASSWORD=Nonsense!Talk
===CONFIG/DATABASE.PHP===
'connections' => [
'crunch' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'crunch'),
'username' => env('DB_USERNAME', 'crunch'),
'password' => env('DB_PASSWORD', 'Nonsense!Talk'),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
'sticky' => true,
],
'munchdata' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'munchdata'),
'username' => env('DB_USERNAME', 'munchdata'),
'password' => env('DB_PASSWORD', 'Nonsense!Talk'),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
'sticky' => true,
],
],
===CONFIG/APP.PHP 文件===
'default' => env('DB_CONNECTION', 'crunch'),
//默认连接工作正常
===模型===
class EntityType extends BaseModel
{
use SoftDeletes;
public $connection = 'munchdata';
public $table = 'entity_type';
( ... )
}
//忽略 $connection
===控制台===
>>> DB::connection('crunch')->getDatabaseName()
=> "crunch"
//使用默认连接
>>> DB::connection('munchdata')->getDatabaseName()
=> "crunch"
>>>
//忽略连接
$result = DB::connection('munchdata')->select('select * from entity_type');
//忽略连接,并从默认数据库返回数据
$result = DB::connection('munchdata')->select('select munchdata.entity_type.* from munchdata.entity_type');
//忽略连接,但仍返回正确的数据....
最佳答案
.ENV 文件中的值必须是唯一的,因为值“DB_CONNECTION=myDatabaseName”不是从“myDatabaseName”键入的数组,而是一个“哑”字符串值。这意味着 .ENV 文件中的所有条目都必须具有唯一的名称。
换句话说,.ENV 文件的工作方式与 Config/App > Connection[] 定义相反。这……没有多大意义,也没有必要。
我假设 .ENV 文件被放入一个以 myDatabaseName 作为键的数组中,并且“DB_*”字符串是常量。这似乎合乎逻辑。
这可能是它应该如何工作,但事实并非如此。
我想,由于我看到许多其他人因类似的假设而提出问题,因此我们应该请求更改,或者我应该编写一些代码以允许多个配置使用相同的常量作为键。
解决方案:
(1) 如果您有少量相对不变的数据库,请继续使用 .ENV 文件 - 并为每个 CONSTANT 指定不同的名称。
(2) 如果动态创建新数据库,请使用 .ENV 作为默认(启动)数据库,然后:
(a) 使用默认(启动)数据库来存储相关的数据库连接配置并缓存它们 - 这会公开您的连接数据并强制您为新实例复制该数据,
<或者 (b) 使用文件系统存储相关的数据库配置,并 (c) 缓存它们。
就我而言,我有 N 个(很多)数据库,我更喜欢使用数据库,然后使用复制(转储并加载带有连接信息的表),而不是使用未知大小的文件,并且可能会出现 '由于开发/IT 错误或恶意而泄漏到现实世界......
干杯
关于mysql - Laravel 忽略多个数据库配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48097874/
我的问题是如何在 python 中创建一个简单的数据库。我的例子是: User = { 'Name' : {'Firstname', 'Lastname'}, 'Address' : {'Street
我需要创建一个与远程数据库链接的应用程序! mysql 是最好的解决方案吗? Sqlite 是唯一的本地解决方案吗? 我使用下面的方法,我想知道它是否是最好的方法! NSString *evento
给定两台 MySQL 服务器,一台本地,一台远程。两者都有一个包含表 bohica 的数据库 foobar。本地服务器定义了用户 'myadmin'@'%' 和 'myadmin'@'localhos
我有以下灵活的搜索查询 Select {vt:code},{vt:productcode},{vw:code},{vw:productcode} from {abcd AS vt JOIN wxyz
好吧,我的电脑开始运行有点缓慢,所以我重置了 Windows,保留了我的文件。因为我的大脑还没有打开,所以我忘记事先备份我的 MySQL 数据库。我仍然拥有所有原始文件,因此我实际上仍然拥有数据库,但
如何将我的 Access 数据库 (.accdb) 转换为 SQLite 数据库 (.sqlite)? 请,任何帮助将不胜感激。 最佳答案 1)如果要转换 db 的结构,则应使用任何 DB 建模工具:
系统检查发现了一些问题: 警告:?:(mysql.W002)未为数据库连接“默认”设置 MySQL 严格模式 提示:MySQL 的严格模式通过将警告升级为错误来修复 MySQL 中的许多数据完整性问题
系统检查发现了一些问题: 警告:?:(mysql.W002)未为数据库连接“默认”设置 MySQL 严格模式 提示:MySQL 的严格模式通过将警告升级为错误来修复 MySQL 中的许多数据完整性问题
我想在相同的 phonegap 应用程序中使用 android 数据库。 更多说明: 我创建了 phonegap 应用程序,但 phonegap 应用程序不支持服务,所以我们已经在 java 中为 a
Time Tracker function clock() { var mytime = new Date(); var seconds
我需要在现有项目上实现一些事件的显示。我无法更改数据库结构。 在我的 Controller 中,我(从 ajax 请求)传递了一个时间戳,并且我需要显示之前的 8 个事件。因此,如果时间戳是(转换后)
我有一个可以收集和显示各种测量值的产品(不会详细介绍)。正如人们所期望的那样,显示部分是一个数据库+建立在其之上的网站(使用 Symfony)。 但是,我们可能还会创建一个 API 来向第三方公开数据
我们将 SQL Server 从 Azure VM 迁移到 Azure SQL 数据库。 Azure VM 为 DS2_V2、2 核、7GB RAM、最大 6400 IOPS Azure SQL 数据
我正在开发一个使用 MongoDB 数据库的程序,但我想问在通过 Java 执行 SQL 时是否可以使用内部数据库进行测试,例如 H2? 最佳答案 你可以尝试使用Testcontainers Test
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 已关闭 9 年前。 此问题似乎与 a specific programming problem, a sof
我正在尝试使用 MSI 身份验证(无需用户名和密码)从 Azure 机器学习服务连接 Azure SQL 数据库。 我正在尝试在 Azure 机器学习服务上建立机器学习模型,目的是我需要数据,这就是我
我在我的 MySQL 数据库中使用这个查询来查找 my_column 不为空的所有行: SELECT * FROM my_table WHERE my_column != ""; 不幸的是,许多行在
我有那个基地:http://sqlfiddle.com/#!2/e5a24/2这是 WordPress 默认模式的简写。我已经删除了该示例不需要的字段。 如您所见,我的结果是“类别 1”的两倍。我喜欢
我有一张这样的 table : mysql> select * from users; +--------+----------+------------+-----------+ | userid
我有表: CREATE TABLE IF NOT EXISTS `category` ( `id` int(11) NOT NULL, `name` varchar(255) NOT NULL
我是一名优秀的程序员,十分优秀!