VMにdebian 8.3をセットアップし、この後にxamppをインストールしました チュートリアル 。新しいテーブルを作成するまで、すべてが機能しています:
_create table testtable
(
id int(10) not null auto_increment,
firstname varchar(255) collate utf8mb4_german2_ci not null,
lastname varchar(255) collate utf8mb4_german2_ci not null,
primary key (id),
unique key (lastname)
)engine = innodb default charset=utf8mb4, collate=utf8mb4_german2_ci
_
私はエラーを受け取りました:_#1709 - Index column size too large. The maximum column size is 767 bytes.
_次に、これは_prefix limitation
_がInnodb
の767Byteに制限されていることがわかり、my.cnfファイルにinnodb_large_prefixを設定することでこれを修正できます。しかし、ファイルを見つけることができず、_/etc/
_の下になく、_/etc/mysql/
_フォルダーがないため、_my.cnf
_は_/opt/lampp/etc/
_にしかありませんが、追加した後_innodb_large_prefix=1
_をファイルに追加し、lamppを再起動しました。同じエラーが発生します。何を間違えたのですか?
edit:SELECT version()
は_5.6.14
_を返すため、_innodb_large_prefix
_をサポートする必要があります。
edit2:キーの一部のみをインデックスとして設定し、767Byte未満になるようにすることで、これを回避できます。しかし、mysqlを正しく構成する方法をここで知りたいです。
5.6.3と5.7.7の間(つまり、MySQL 5.6またはMariaDB 10.0を実行している場合)には、4つのステップがあります。
注
SELECT * FROM information_schema.INNODB_SYS_TABLESPACES;
file_formatとrow_formatを提供します。他のいくつかのI_Sテーブルは、file_per_tableの手がかりを提供します。
Mysql 5.6.17とWAMPサーバーを使用していますmy.iniファイルを編集して問題を解決しましたカテゴリ[mysqld]を見つけて、次の手順を追加します
[mysqld]
innodb_file_format = Barracuda
innodb_large_prefix = 1
innodb_file_per_table = ON
変更を保存してすべてのサービスを再起動することを忘れないでください。
Xamppに移動して、次のクエリを追加します。
`mysql>` set global innodb_file_format = `BARRACUDA`;
`mysql>` set global innodb_large_prefix = `ON`;
永続的な解決策として、pliasはmariadb My.INIファイルに以下を追加します-
## Innodb settings to bypass error of max size 737
innodb-file-format=barracuda
innodb-file-per-table=ON
innodb-large-prefix=ON
## Above 3 didnot work so i added below
innodb_default_row_format = 'DYNAMIC'
10.1.38を使用していました
mysql> set global innodb_file_format = `BARRACUDA`;
mysql> set global innodb_large_prefix = `ON`;