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
其他读取列值的语句也需要特权。例如,
选择
中col_name=expr赋值右侧引用的列需要
UPDATE
但我们不是指那个专栏(
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实例上。)