Debian JessieではMariaDBサーバー10.0.30をインストールしましたが、最大鍵長を増やそうとしています。 AFAIUは、設定パラメータinnodb_large_prefix
が有効になっているかどうかによって異なります。 docsによれば、barracuda
ファイルフォーマットとinnodb_file_per_table
も必要です。設定でそれらを設定し、私がクライアントに表示、サーバーを再起動した後、これらのパラメータが正しく設定されていること:MariaDB 10で大きなインデックスを有効にする方法は?
> SHOW GLOBAL VARIABLES LIKE 'innodb_large%';
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| innodb_large_prefix | ON |
+---------------------+-------+
1 row in set (0.00 sec)
> SHOW GLOBAL VARIABLES LIKE 'innodb_file%';
+--------------------------+-----------+
| Variable_name | Value |
+--------------------------+-----------+
| innodb_file_format | Barracuda |
| innodb_file_format_check | OFF |
| innodb_file_format_max | Antelope |
| innodb_file_per_table | ON |
+--------------------------+-----------+
4 rows in set (0.00 sec)
> SHOW GLOBAL VARIABLES LIKE 'innodb_page%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| innodb_page_size | 16384 |
+------------------+-------+
1 row in set (0.00 sec)
私はわからない、なぜinnodb_file_format_max
はAntelope
に設定されていますが、innodb_file_format_check
がOFFになっている一方で、それは問題ではないはずです。実際には、それもBarracuda
と設定しても、違いはありませんでした。私は今のような大規模なインデックスを持つテーブルを作成してみてください場合
:デフォルトでは(同じMySQLサーバ5.7.17とUbuntuの16.04で
ERROR 1709 (HY000): Index column size too large. The maximum column size is 767 bytes.
はすべて関連しているの設定:
CREATE TABLE `some_table` (
`some_tableID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`column` varchar(750) COLLATE utf8mb4_estonian_ci NOT NULL DEFAULT '',
PRIMARY KEY (`some_tableID`),
KEY `column` (`column`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_estonian_ci;
私はエラーを取得します)、大きなインデックスに問題はありません(utf8mb4の場合は750 * 4 = 3000)。
MariaDBのセットアップで何が問題になっていますか?それはちょうどこれらの2つの設定よりも多く必要と
'ROW_FORMAT = DYNAMIC'を追加したら? – Hackerman
@Hackerman、MariaDBをあきらめてMySQLに戻ったのでもうテストできません –
FWIW MariaDBとは関係ありません。 MySQL 5.6にも同じ問題があります。 MariaDB 10.2では問題でもありません。 –