Mysql

Mysql 相同的數據庫,相同的查詢,不同的使用者 - 不同的錯誤資訊

  • December 23, 2020

在我的 AWS RDS Mysql 8.0.16 伺服器上,我有一個 DB ( my-db) 和 2 個使用者:master使用者(由 RDS 自動創建)和我創建的應用程序使用者:

create user if not exists `appuser`@`%` identified by 's3cr3t';
grant all on `my-db`.* to `appuser`@`%`;

當我delete from Things where id = 123代表 執行查詢時appuser,我得到的錯誤消息是:

$$ 23000 $$$$ 1217 $$無法刪除或更新父行:外鍵約束失敗

1217並且沒有約束細節)

當我以主使用者身份執行相同的查詢時,錯誤消息是:

$$ 23000 $$$$ 1451 $$無法刪除或更新父行:外鍵約束失敗 ( my-db. Sandwiches, CONSTRAINT SandwichesThingIdFKFOREIGN KEY ( thingId) REFERENCES Things( id))

1451還有約束細節)

如何appuser獲取 1451 和所有詳細資訊?

看起來這個問題特定於 Mysql 8.0.16。我已經升級到 8.0.21,現在按預期得到 1451。

更長的答案:1217 ( ER_ROW_IS_REFERENCED) 和 1451 ( ER_ROW_IS_REFERENCED_2) 都描述了相同的情況。據我了解,如果使用者對感興趣的表有REFERENCES權限,Mysql 將使用 1451 ,否則使用 1217。這是關於 1216 ( ER_NO_REFERENCED_ROW) 與 1452 ( ER_NO_REFERENCED_ROW_2) 的相同故事。

引用自:https://dba.stackexchange.com/questions/282009