Mariadb

MaridDB 10.3.29 阻止我刪除外鍵

  • May 20, 2021

這是觸發錯誤的最小範例

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一切正常
  • 錯誤消息中的bfrom 會隨著SELECT語句中的表別名而變化
  • 再次執行最後一條語句顯示相同的錯誤
  • 錯誤消息根本沒有意義

所以我的問題是:我的 SQL 有什麼問題?

這實際上是 MariaDB 中的一個錯誤。請參閱錯誤跟踪器

他們建議做FLUSH TABLES;之前的ALTER聲明。

我可以確認這“隱藏了錯誤”。

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