[groonga-dev,04709] Mroonga でテーブルをキーに使っているカラムを含むテーブルの、他のカラムを ALTER COLUMN で変更できない

Back to archive index
6ellll 6elll****@gmail*****
2018年 11月 6日 (火) 07:19:33 JST


ご無沙汰しております。

少々不可解な動作がありましたので報告いたします。
以下の条件で再現しました。

MariaDB 10.3.10
Mroonga 8.07
CentOS 7

ベクターカラムを使ってタグを検索するようなテーブルを作ります。

CREATE TABLE tags (
  name VARCHAR(64) PRIMARY KEY
) ENGINE=Mroonga DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

CREATE TABLE entry (
  id INT PRIMARY KEY AUTO_INCREMENT,
  state INT DEFAULT 1,
  tags TEXT COMMENT 'flags "COLUMN_VECTOR", type "tags"',
  FULLTEXT INDEX entry_tags_index(tags) COMMENT 'table "tags"'
) ENGINE=Mroonga DEFAULT CHARSET=utf8;

この状態で、ベクターカラムや参照先の tags テーブルと関係ないはずの
state カラムに対する ALTER TABLE ~ ALTER COLUMN ~ 構文の操作が効かなくなります。
例えば以下のようなものです。

ALTER TABLE entry ALTER COLUMN state DROP DEFAULT;
ALTER TABLE entry ALTER COLUMN state SET DEFAULT 0;
ALTER TABLE entry MODIFY COLUMN state VARCHAR(30);
などなど。

これらは失敗して次のエラーが出ます。
#1005 - [table][remove] a column that references the table exists:
<#sql-2d5a_e3.tags> -> <tags>

いっぽうで、カラムごと DROP して作り直すのは正常にできます。
ALTER TABLE entry DROP COLUMN state;
ALTER TABLE entry ADD COLUMN ~

Django のマイグレーションが、ALTER TABLE ~ ALTER COLUMN ~ 構文の SQL を吐き出すため
もし不具合であれば対応されると助かります。
仕様であれば、
既にデータの入っているテーブルを変更したくなることも皆無とは言い切れないので
なにか良い対処法はありませんでしょうか。

以上です。


More information about the groonga-dev mailing list
Back to archive index