Mysql 为什么此INSERT语句需要SELECT授权?

Mysql 为什么此INSERT语句需要SELECT授权?,mysql,permissions,amazon-aurora,Mysql,Permissions,Amazon Aurora,我大致运行以下SQL语句: INSERT INTO a_table (file_hash, p, c) VALUES (%(hash)s, %(p)s, %(c)s) ON DUPLICATE KEY UPDATE p = %(p)s, c = %(c)s ; 使用这些参数,尽管我屏蔽了这些值: [parameters: {'hash': -, 'p': -, 'c': -}] MySQL给了我以下错误: SELECT command denied to us

我大致运行以下SQL语句:

INSERT INTO a_table
    (file_hash, p, c)
VALUES
    (%(hash)s, %(p)s, %(c)s)
ON DUPLICATE KEY UPDATE
    p = %(p)s,
    c = %(c)s
;
使用这些参数,尽管我屏蔽了这些值:

[parameters: {'hash': -, 'p': -, 'c': -}]
MySQL给了我以下错误:

SELECT command denied to user 'our_user'@'10.1.1.2' for column 'p' in table 'a_table'"
为什么?

(手册似乎最接近于解释这一点的是

读取列值的其他语句也需要
SELECT
权限。例如,
UPDATE
语句中col_name=expr赋值右侧引用的列需要
SELECT

但我们并没有在语句中引用赋值RHS上的那个列(
p
),我们也没有试图在我能看到的任何地方读取该值。)

模式:

CREATE TABLE `a_table` (
  `file_hash` binary(16) NOT NULL,
  `p` tinyint(4) DEFAULT NULL,
  `c` smallint(6) DEFAULT NULL,
  PRIMARY KEY (`file_hash`),
  KEY `idx_p` (`p`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

(编辑:我在我的实时环境之外复制它时也遇到了一些困难;这发生在AWS MySQL Aurora实例上。)

它必须进行选择才能确定它是否是重复的键?它要求选择
p
,这不是任何键的一部分。(忽略模式中的
KEY
行;MySQL错误地使用
KEY
表示索引。)