我试图像这样在MySQL 8中对重复键更新使用插入:
INSERT INTO orders SELECT * FROM temporary_orders ON DUPLICATE KEY UPDATE column1='a';
但是我得到这个错误:
UPDATE command denied to user 'user'@'localhost' for column 'column1' in table 'orders';
最初,我的用户仅具有SELECT
和UPDATE
特权,但是现在我为用户提供了全局特权,并且仍然发生错误。正在运行:
INSERT INTO orders SELECT * FROM temporary_orders;
没有ON DUPLICATE KEY UPDATE
部分的作品。我也可以运行:
UPDATE orders SET column1='a';
我的特定MySQL版本是mysql Ver 8.0.16 for Linux on x86_64 (MySQL Community Server - GPL)
。
我运行了此命令以向用户授予全局特权:
GRANT ALL ON *.* TO 'user'@'localhost';
正在运行:
SHOW GRANTS FOR 'user'@'localhost';
输出:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `user`@`localhost`
更新
我已经测试过,并且使用root用户确实可以,但是我不确定会丢失哪些权限。
答案 0 :(得分:0)
我最终创建了一个新用户,然后授予了所有权限,如下所示:
str_to_merge
效果很好。不知道是什么问题。