Gents、次の方法でテーブルをmyisamからndbに変換します。
ALTER TABLE piwik_log_profiling ENGINE NDBCLUSTER;
これは次の場合に失敗します:
BLOB column 'query' can't be used in key specification with the used table type
ここで、「query」フィールドがtextからvarcharに変更されると、次のようになります。
Incorrect prefix key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique prefix keys
元のテーブル:
| log_profiling_backup | CREATE TABLE `log_profiling_backup` (
`query` text NOT NULL,
`count` int(10) unsigned DEFAULT NULL,
`sum_time_ms` float DEFAULT NULL,
UNIQUE KEY `query` (`query`(100))
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
たぶんあなたは以下を試すことができます:
ALTER TABLE piwik_log_profiling RENAME piwik_log_profiling_old;
CREATE TABLE piwik_log_profiling SELECT * FROM piwik_log_profiling_old WHERE 1=2;
ALTER TABLE piwik_log_profiling ADD COLUMN query100 CHAR(100) NOT NULL AFTER query;
ALTER TABLE piwik_log_profiling ADD UNIQUE INDEX (query100);
ALTER TABLE piwik_log_profiling ENGINE=NDBCLUSTER;
それが今までうまくいったら、彼らはこれをします
INSERT INTO piwik_log_profiling (query)
SELECT query,LEFT(query,100),`count`,sum_time_ms
FROM piwik_log_profiling_old;
これに基づいて、クエリはWHERE句でクエリの代わりにquery100を使用する必要があります。
これがうまくいったかどうか私たち全員に知らせてください!!!