Spring 只读用户的复制问题(命令被拒绝)
Spring replication issue with read only user (command denied)
我有一个带有复制设置的 Spring 应用程序(一个用于 rw 操作的主数据库和一个用于 r 操作的从数据库)。
到目前为止一切顺利。我想,让一个用户进行 rw 操作和一个用户进行只读操作可能是个好主意。
所以我添加了一个只读用户,它只授予了 SELECT 命令。
现在,当我测试我的应用程序时,出现以下错误:
java.sql.SQLSyntaxErrorException: SELECT with locking clause command denied to user 'testreader'@'localhost' for table 'hibernate_sequence'
我想我可以通过授予 LOCK TABLES 权利来摆脱这个问题,但这是我需要做的吗?还是这个只读用户需要锁定 hibernate_sequence(我想是某个内部 Spring 数据库)?
还是我完全遗漏了其他东西?
如果需要,我可以在此处 post 一些代码。
感谢您的帮助!
编辑 1:
如果我授予 LOCK TABLES 我会收到此错误:
java.sql.SQLSyntaxErrorException: UPDATE command denied to user 'testreader'@'localhost' for table 'hibernate_sequence'
所以要么我需要授予此 spring table 的所有权利,要么我做的事情(完全)错了。
好的,我找到了解决办法。
原来,我的问题是由于我的实体中自动生成的 ID。
替换时:
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
与:
@Id
@GeneratedValue(
strategy= GenerationType.AUTO,
generator="native"
)
@GenericGenerator(
name = "native",
strategy = "native"
)
我摆脱了这个 hibernate_sequence table,这个问题就消失了。
问候
我有一个带有复制设置的 Spring 应用程序(一个用于 rw 操作的主数据库和一个用于 r 操作的从数据库)。
到目前为止一切顺利。我想,让一个用户进行 rw 操作和一个用户进行只读操作可能是个好主意。
所以我添加了一个只读用户,它只授予了 SELECT 命令。
现在,当我测试我的应用程序时,出现以下错误:
java.sql.SQLSyntaxErrorException: SELECT with locking clause command denied to user 'testreader'@'localhost' for table 'hibernate_sequence'
我想我可以通过授予 LOCK TABLES 权利来摆脱这个问题,但这是我需要做的吗?还是这个只读用户需要锁定 hibernate_sequence(我想是某个内部 Spring 数据库)?
还是我完全遗漏了其他东西?
如果需要,我可以在此处 post 一些代码。
感谢您的帮助!
编辑 1:
如果我授予 LOCK TABLES 我会收到此错误:
java.sql.SQLSyntaxErrorException: UPDATE command denied to user 'testreader'@'localhost' for table 'hibernate_sequence'
所以要么我需要授予此 spring table 的所有权利,要么我做的事情(完全)错了。
好的,我找到了解决办法。 原来,我的问题是由于我的实体中自动生成的 ID。
替换时:
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
与:
@Id
@GeneratedValue(
strategy= GenerationType.AUTO,
generator="native"
)
@GenericGenerator(
name = "native",
strategy = "native"
)
我摆脱了这个 hibernate_sequence table,这个问题就消失了。 问候