Mysql
Mysql 相同的數據庫,相同的查詢,不同的使用者 - 不同的錯誤資訊
在我的 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
, CONSTRAINTSandwichesThingIdFK
FOREIGN KEY (thingId
) REFERENCESThings
(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
) 的相同故事。