Rod*_*ore 5 postgresql laravel-4
我正在尝试在 Laravel 4.2.6 中设置读/写连接,但我无法执行 INSERT,但我可以执行 UPDATE 和 DELETE 事务。我得到的消息是:
SQLSTATE[25006]: Read only sql transaction: 7 ERROR: cannot execute INSERT in a read-only transaction
Run Code Online (Sandbox Code Playgroud)
数据库的配置是:
'connections' => [
'pgsql' => [
'read' => [
'host' => '192.168.22.10'
],
'write' => [
'host' => '192.168.33.10'
],
'driver' => 'pgsql',
'database' => 'simpo',
'username' => 'postgres',
'password' => 'xxx',
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
],
]
Run Code Online (Sandbox Code Playgroud)
我正在使用带有 2 个服务器(虚拟机)的 Postgres 9.3。复制工作正常,是一个简单的二进制或“热备”复制(主/从),其中备用机器只能进行读取操作。
编辑:
我使用查询构建器进行了测试,并且 INSERT 工作正常,但是 Eloquent 失败了。
我在想这可能是 Eloquent 模型中连接的一个 BUG 但不寻常的是唯一的 INSERT 操作失败了而不是 UPDATE OR DELETE,所以这让我认为这是一些只有在 INSERT 时才会发生的操作执行(也许使用生成的 ID?)
编辑2:
我终于注意到了这个问题。当 Laravel 尝试插入和获取行的 Id 时会发生错误。问题发生是因为框架调用了一个'select'方法,但是这个select执行并且“INSERT ...返回'ID'”,所以如果机器只能执行SELECT事务失败,因为这个SELECT带有一个INSERT。
我提出了一个拉取请求,我检查选择方法是否以“插入”操作开始,并根据它获得正确的连接 https://github.com/laravel/framework/pull/4914
| 归档时间: |
|
| 查看次数: |
17240 次 |
| 最近记录: |