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,这个问题就消失了。 问候