php - Laravel 验证“存在”在主从数据库配置中不起作用?
问题描述
我正在将项目移动到主从配置并遇到问题,与 DB 相关的验证停止为我工作。有什么我想念的想法吗?
所以这是验证部分:
$request->validate([
'property_id' => 'required|exists:mysql.property,p_id',
... other validations not related to DB ...
], $error_messages);
文件 config\database.php :
'mysql' => [
'driver' => 'mysql',
'write' => [
'host' => '196.168.56.211',
],
'read' => [
'host' => '192.168.56.222',
],
'port' => '3306',
'database' => 'project_db',
'username' => 'db_user',
'password' => 'pass123',
'unix_socket' => env('DB_SOCKET'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
\PDO::ATTR_EMULATE_PREPARES => true,
],
这就是我正在接受的:
在文件 \vendor\laravel\framework\src\Illuminate\Database\Connection.php [663] 中:
catch (Exception $e) {
throw new QueryException(
$query, $this->prepareBindings($bindings), $e
);
}
SQLSTATE[HY000] [2002] 尝试建立连接不成功,因为在规定时间内没有从其他计算机收到所需的响应,或者已经建立的连接由于已经连接的计算机的错误响应而终止。(SQL: select count(*) as aggregate from
property
wherep_id
= 2444)当 laravel 尝试连接到“写入”数据库时,就会发生这种情况。但从 MySQL 工作台 - 连接和编辑记录很好。
有任何想法吗?
解决方案
将您的配置更改为
'mysql' => [
'write' => [
'host' => '196.168.56.211'
],
'read' => [
'host' => '192.168.56.222',
],
'sticky' => true,
'driver' => 'mysql',
'database' => 'project_db',
'username' => 'db_user',
'password' => 'pass123',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
],
这确保了在请求周期中写入的任何数据都可以在同一请求期间立即从数据库中读回
阅读官方文档以获取更多信息
推荐阅读
- jsf - 从 h:datatable 移动到网格视图
- linux - 无法在 unix:///var/run/docker.sock 连接到 Docker 守护进程
- java - 如何使用 selenium 网络驱动程序自动化 youtube?
- sql - 在Oracle中获取插入行的ID,使用序列和触发器插入ID
- sql - SQL ON DELETE CASCADE 基于条件
- vba - 如果 VBA 中的语句无法正常工作
- ios - openALPR 通过 Hyperloop 集成到 Appcelerator 应用程序中
- vba - 如何在用户表单中包含 msoFileDialogFolderPicker
- android - 无需 FCM/GCM 的 Android 永久通知服务
- r - 二项式混合效应模型 BIC - R 与 SPSS