Login
网站首页 > 文章中心 > 其它

将MySQL从MyISAM转换成InnoDB错误和解决办法

作者:小编 更新时间:2023-09-28 14:35:03 浏览量:468人看过

将MySQL从MyISAM转换成InnoDB是一个比较常见的操作,因为InnoDB相较于MyISAM有更多的优点,例如支持事务、外键等.但是在将数据库从MyISAM转换成InnoDB时,可能会遇到一些错误.下面是将MySQL从MyISAM转换成InnoDB的完整攻略,包括错误和解决办法:

1.备份数据

在进行任何数据库操作之前,一定要备份数据,以防不测.可以通过mysqldump命令备份数据,示例如下:


mysqldump -u username -p database_name > backup.sql


2.检查表的类型

在将表从MyISAM转换成InnoDB之前,必须确保表已经被创建为MyISAM类型.可以通过以下命令查询:


SHOW TABLE STATUS WHERE Engine='MyISAM';


如果需要将所有表都转换成InnoDB,可以使用以下命令进行批量转换:


ALTER TABLE table_name ENGINE = InnoDB;


③修改配置文件

将MySQL从MyISAM转换成InnoDB之后,还需要修改MySQL的配置文件.在MySQL配置文件中,需要增加以下参数:


innodb_buffer_pool_size=256M
innodb_log_file_size=64M
innodb_file_per_table=1


④重启MySQL

修改完配置文件后,需要重启MySQL服务,使其生效:


sudo service mysql restart


错误和解决办法

在将MySQL从MyISAM转换成InnoDB的过程中,可能会遇到以下两种错误:

错误1:Column count of mysql.proc is wrong

这是因为mysql.proc表的结构与InnoDB引擎的要求不兼容,解决办法如下:

①备份mysql.proc表


mysqldump -u username -p --no-data mysql proc > /tmp/proc.sql



DROP TABLE mysql.proc;



mysql < /usr/share/mysql/mysql_fix_privilege_tables.sql



mysql -u username -p mysql < /tmp/proc.sql


错误2:ERROR 1709 (HY000): Index column size too large.

这是因为InnoDB引擎对索引列的大小有限制,解决办法如下:


sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf



innodb_large_prefix=true
innodb_file_format=barracuda
innodb_file_per_table=true



sudo service mysql restart


通过以上步骤,将MySQL从MyISAM转换成InnoDB应该会更加顺利.

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章