Mariadb
MaridDB 10.3.29 阻止我刪除外鍵
這是觸發錯誤的最小範例
CREATE TABLE A ( id bigint NOT NULL AUTO_INCREMENT PRIMARY KEY ); CREATE TABLE B ( what tinyint NOT NULL, a bigint NOT NULL, CONSTRAINT x FOREIGN KEY (a) REFERENCES A(id), CONSTRAINT y CHECK (what > 0) ); SELECT b.a FROM B b; ALTER TABLE B DROP CONSTRAINT x;
當我在一個新的 MariaDB 實例(docker mariadb:10.3.28)中執行它時,一切正常。
當 MariaDB 10.3.29 發佈時,查詢突然中斷。因此,當我在新的 MariaDB 實例(docker mariadb:10.3.29)中執行它時,我收到最後一條語句的以下錯誤消息:
[42S22][1054] (conn=8) Unknown column '`db`.`b`.`what`' in 'CHECK'
一些奇怪的觀察:
- 如果我刪除檢查並在刪除一切正常
y
後添加它x
- 如果我刪除
SELECT
一切正常- 錯誤消息中的
b
from 會隨著SELECT
語句中的表別名而變化- 再次執行最後一條語句顯示相同的錯誤
- 錯誤消息根本沒有意義
所以我的問題是:我的 SQL 有什麼問題?
這實際上是 MariaDB 中的一個錯誤。請參閱錯誤跟踪器。
他們建議做
FLUSH TABLES;
之前的ALTER
聲明。我可以確認這“隱藏了錯誤”。