我在Debian上运行MySQL 5.5.55,我希望启用innodb_large_prefix设置,这样我就可以拥有大于767字节的表INDEXes。
我的/etc/mysql/my.cnf文件中有以下配置:
[mysqld]
...
innodb_file_per_table=1
innodb-large-prefix=ON
innodb_file_format=barracuda(我也尝试过innodb_large_prefix=ON。)
更新:我检查了一遍,没有其他配置文件,例如/etc/my.cnf、/usr/etc/my.cnf、~root/.my.cnf、~mysql/.my.cnf)。
但是,当我重新启动MySQL时,活动配置显示为:
| innodb_file_format | Barracuda |
| innodb_large_prefix | OFF |
| innodb_file_per_table | ON |如果我从MySQL CLI手动更改全局设置,则该设置似乎会更改:
mysql> SET GLOBAL innodb_large_prefix = ON;
...
| innodb_large_prefix | ON |然后,当我尝试实际使用“大前缀”时,会得到一个错误:
mysql> alter table [...]
ERROR 1709 (HY000): Index column size too large. The maximum column size is 767 bytes.MySQL的设置文档说,使用此设置有几个先决条件:
innodb_file_format = Barracuda✔innodb_file_per_table = ON✔innodb_large_prefix = ON✔在玩了一会儿之后,我能够按需要转换我的表,方法是:
SET GLOBAL innodb_large_prefix = ON;ALTER TABLE [...], ROW_FORMAT=DYNAMIC;太棒了。然后重新启动MySQL并检查有效设置:
| innodb_large_prefix | OFF |我在使用那张表时没有任何错误,所以我想一切都很好,但奇怪的是,设置似乎不稳定。
我尝试重新修改我的表,设置为OFF,我无法构建那个大索引。这是否意味着每当我想以这种方式修改表时,都必须手动将innodb_large_prefix设置为ON?我是否没有在/etc/mysql/my.cnf中正确配置此设置?
https://stackoverflow.com/questions/44708668
复制相似问题