Naoya Murakami
visio****@gmail*****
2014年 1月 7日 (火) 12:49:18 JST
お世話になっております。村上です。 テーブル参照先のカラムに対するインデックスがあるMroongaのテーブルに 対して、カラムの追加、削除等をするためにALTER TABLEすると、以下 のメッセージが発生しテーブル定義の変更ができません。 #1005 - [table][remove] a column that references the table exists: <Bugs.tags> -> <Tags> 以下のログをみると、ALTER TABLEで#sqlから始まる一時テーブルを つくる際に参照先テーブル(Tags)にインデックスを作ろうとして、すでに 参照先テーブル(Tags)に同じインデックスがあると言われて怒られている ようです。 このため、テーブル定義を修正する場合、(1)一時データベースにデータ退避、 (2)元データベースを削除、(3)元データベースを再作成してテーブルを再定義、 (4)再定義したテーブルにデータを入れ直すという運用をしています。 もしくは、テーブル参照型のインデックスを全部削除してから、ALTER TABLE でテーブル定義を修正して、テーブル参照型のインデックスを追加するという 方法でも対応可能かもしれません。(これは数が多いのでやりませんが。。) しかしながら、これらはなかなかに面倒なので、もし、GroongaかMroonga側 で対応が可能であれば、簡単にカラム追加、削除等ができて助かります。 難しければ、従来の運用をやるので大丈夫です! 余談ですが、インデックス再構築なしでMroongaテーブルのカラム追加、削除 ができると最高だなぁと思ったりします。 (テーブルサイズが非常に大きいとカラムを1つ追加するのにも、全インデックス 再構築になりすごく大変で。。) <再現SQL> CREATE TABLE Tags ( name VARCHAR(64) PRIMARY KEY ) ENGINE=mroonga DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='default_tokenizer "TokenDelimit"'; CREATE TABLE Bugs ( id INT UNSIGNED PRIMARY KEY, tags VARCHAR(40) COMMENT 'type "Tags", flags "COLUMN_VECTOR"', FULLTEXT INDEX bugs_tags_index (tags) COMMENT 'table "Tags"' ) ENGINE=mroonga DEFAULT CHARSET=utf8; ALTER TABLE Bugs ADD ex_tag VARCHAR(40); <Groongaログ> 2014-01-07 11:19:18.519021|n|3df8e700|DDL:table_create #sql-45c5_1191 2014-01-07 11:19:18.519804|n|3df8e700|DDL:column_create #sql-45c5_1191 id 2014-01-07 11:19:18.520201|n|3df8e700|DDL:column_create #sql-45c5_1191 tags 2014-01-07 11:19:18.520873|n|3df8e700|DDL:column_create #sql-45c5_1191 ex_tag 2014-01-07 11:19:18.521535|n|3df8e700|DDL:column_create Tags bugs_tags_index 2014-01-07 11:19:18.521563|e|3df8e700|already used name was assigned: <Tags.bugs_tags_index> 2014-01-07 11:19:18.525916|e|3df8e700|/usr/lib64/libgroonga.so.0(grn_obj_register+0x26e) [0x7f39bcb1fd3e] 2014-01-07 11:19:18.525933|e|3df8e700|/usr/lib64/libgroonga.so.0(grn_column_create+0x18e) [0x7f39bcb39a4e] 2014-01-07 11:19:18.525942|e|3df8e700|/usr/local/mysql/lib/plugin/ha_mroonga.so(_ZN10ha_mroonga20storage_create_indexEP5TABLEPKcP8_grn_objP16st_mroonga_shareP6st_keyPS5_SA_j+0x195) [0x7f386cabbb25] 2014-01-07 11:19:18.525951|e|3df8e700|/usr/local/mysql/lib/plugin/ha_mroonga.so(_ZN10ha_mroonga22storage_create_indexesEP5TABLEPKcP8_grn_objP16st_mroonga_share+0xba) [0x7f386cabbeea] 2014-01-07 11:19:18.525959|e|3df8e700|/usr/local/mysql/lib/plugin/ha_mroonga.so(_ZN10ha_mroonga14storage_createEPKcP5TABLEP24st_ha_create_informationP16st_mroonga_share+0x56b) [0x7f386cac7e2b] 2014-01-07 11:19:18.525975|e|3df8e700|/usr/local/mysql/lib/plugin/ha_mroonga.so(_ZN10ha_mroonga6createEPKcP5TABLEP24st_ha_create_information+0x84) [0x7f386cac80d4] 2014-01-07 11:19:18.525984|e|3df8e700|/usr/local/mysql/bin/mysqld(_Z15ha_create_tableP3THDPKcS2_S2_P24st_ha_create_informationbb+0x254) [0x593414] 2014-01-07 11:19:18.525992|e|3df8e700|/usr/local/mysql/bin/mysqld(_Z17mysql_alter_tableP3THDPcS1_P24st_ha_create_informationP10TABLE_LISTP10Alter_infojP8st_orderb+0x24d2) [0x726ed2] 2014-01-07 11:19:18.525999|e|3df8e700|/usr/local/mysql/bin/mysqld(_ZN19Sql_cmd_alter_table7executeEP3THD+0x43c) [0x81a9cc] 2014-01-07 11:19:18.526007|e|3df8e700|/usr/local/mysql/bin/mysqld(_Z21mysql_execute_commandP3THD+0x1a24) [0x6d3824] 2014-01-07 11:19:18.526014|e|3df8e700|/usr/local/mysql/bin/mysqld(_Z11mysql_parseP3THDPcjP12Parser_state+0x4c7) [0x6d6d47] 2014-01-07 11:19:18.526022|e|3df8e700|/usr/local/mysql/bin/mysqld(_Z16dispatch_command19enum_server_commandP3THDPcj+0x189c) [0x6d86dc] 2014-01-07 11:19:18.526029|e|3df8e700|/usr/local/mysql/bin/mysqld(_Z24do_handle_one_connectionP3THD+0x10d) [0x6a0b2d] 2014-01-07 11:19:18.526036|e|3df8e700|/usr/local/mysql/bin/mysqld(handle_one_connection+0x42) [0x6a0c62] 2014-01-07 11:19:18.526044|e|3df8e700|/usr/local/mysql/bin/mysqld(pfs_spawn_thread+0x127) [0xafa567] 2014-01-07 11:19:18.526051|e|3df8e700|/lib64/libpthread.so.0() [0x3c55e07851] 2014-01-07 11:19:18.526060|n|3df8e700|DDL:obj_remove Tags 2014-01-07 11:19:18.526115|e|3df8e700|[table][remove] a column that references the table exists: <Bugs.tags> -> <Tags> 2014-01-07 11:19:18.529977|e|3df8e700|/usr/lib64/libgroonga.so.0(+0x51013) [0x7f39bcb38013] 2014-01-07 11:19:18.529994|e|3df8e700|/usr/lib64/libgroonga.so.0(+0x52661) [0x7f39bcb39661] 2014-01-07 11:19:18.530002|e|3df8e700|/usr/lib64/libgroonga.so.0(+0x5179d) [0x7f39bcb3879d] 2014-01-07 11:19:18.530009|e|3df8e700|/usr/lib64/libgroonga.so.0(grn_obj_remove+0xbb) [0x7f39bcb3927b] 2014-01-07 11:19:18.530017|e|3df8e700|/usr/local/mysql/lib/plugin/ha_mroonga.so(_ZN10ha_mroonga20storage_create_indexEP5TABLEPKcP8_grn_objP16st_mroonga_shareP6st_keyPS5_SA_j+0x1bb) [0x7f386cabbb4b] 2014-01-07 11:19:18.530024|e|3df8e700|/usr/local/mysql/lib/plugin/ha_mroonga.so(_ZN10ha_mroonga22storage_create_indexesEP5TABLEPKcP8_grn_objP16st_mroonga_share+0xba) [0x7f386cabbeea] 2014-01-07 11:19:18.530031|e|3df8e700|/usr/local/mysql/lib/plugin/ha_mroonga.so(_ZN10ha_mroonga14storage_createEPKcP5TABLEP24st_ha_create_informationP16st_mroonga_share+0x56b) [0x7f386cac7e2b] 2014-01-07 11:19:18.530039|e|3df8e700|/usr/local/mysql/lib/plugin/ha_mroonga.so(_ZN10ha_mroonga6createEPKcP5TABLEP24st_ha_create_information+0x84) [0x7f386cac80d4] 2014-01-07 11:19:18.530046|e|3df8e700|/usr/local/mysql/bin/mysqld(_Z15ha_create_tableP3THDPKcS2_S2_P24st_ha_create_informationbb+0x254) [0x593414] 2014-01-07 11:19:18.530053|e|3df8e700|/usr/local/mysql/bin/mysqld(_Z17mysql_alter_tableP3THDPcS1_P24st_ha_create_informationP10TABLE_LISTP10Alter_infojP8st_orderb+0x24d2) [0x726ed2] 2014-01-07 11:19:18.530061|e|3df8e700|/usr/local/mysql/bin/mysqld(_ZN19Sql_cmd_alter_table7executeEP3THD+0x43c) [0x81a9cc] 2014-01-07 11:19:18.530068|e|3df8e700|/usr/local/mysql/bin/mysqld(_Z21mysql_execute_commandP3THD+0x1a24) [0x6d3824] 2014-01-07 11:19:18.530075|e|3df8e700|/usr/local/mysql/bin/mysqld(_Z11mysql_parseP3THDPcjP12Parser_state+0x4c7) [0x6d6d47] 2014-01-07 11:19:18.530082|e|3df8e700|/usr/local/mysql/bin/mysqld(_Z16dispatch_command19enum_server_commandP3THDPcj+0x189c) [0x6d86dc] 2014-01-07 11:19:18.530089|e|3df8e700|/usr/local/mysql/bin/mysqld(_Z24do_handle_one_connectionP3THD+0x10d) [0x6a0b2d] 2014-01-07 11:19:18.530096|e|3df8e700|/usr/local/mysql/bin/mysqld(handle_one_connection+0x42) [0x6a0c62] 2014-01-07 11:19:18.530114|n|3df8e700|DDL:obj_remove Tags 2014-01-07 11:19:18.530160|n|3df8e700|DDL:obj_remove #sql-45c5_1191 2014-01-07 11:19:18.530210|n|3df8e700|DDL:obj_remove #sql-45c5_1191.ex_tag 2014-01-07 11:19:18.530434|n|3df8e700|DDL:obj_remove #sql-45c5_1191.id 2014-01-07 11:19:18.530505|n|3df8e700|DDL:obj_remove #sql-45c5_1191.tags 2014-01-07 11:19:18.530789|n|3df8e700|(1 same messages are truncated) 以上、よろしくお願いします。