我在只读数据库中使用select查询时遇到了奇怪的hibernate问题。
SQL Error: 1290, SQLState: HY000
The MySQL server is running with the --read-only option so it cannot execute this statement
我们的要求是从只读数据库而不是从主数据库运行select query。
查询:SELECT x FROM <table_name> x WHERE x.deleted = false AND x.<column_name> = 'value'.
我们尝试过的补救:
- 使用show_sql=true检查日志,我们没有得到任何中间操作,如插入,删除或更新。
- 检查副本db中的@@read_only标志,其值为1。
您可以运行MySQL SHOW VARIABLES命令来验证您的MySQL服务器是否以只读模式运行:
SHOW GLOBAL VARIABLES LIKE '%read_only%';
如果返回的变量值是ON
而不是OFF
,则可以将其设置为OFF
,使用以下方法将variable_name替换为适用的变量(例如read_only):
SET GLOBAL variable_name = 'OFF';
然后再试一次。
注意,设置全局系统变量可能需要超级权限。