MySQL 5.6默认的存储引擎是MyISAM,而非InnoDB。

5

我是新来的,希望有人能帮我解决MySQL问题。

我遇到了一个奇怪的情况,InnoDB不是默认存储引擎:

  • MySQL版本14.14 Distrib 5.6.39,适用于Linux(x86_64),使用EditLine包装器。
  • linux发行版:CentOS Linux release 7.5.1804(Core)

我已经尝试了几乎每一个使InnoDB成为默认引擎的解决方案,但都没有成功。

以下是我尝试过的一些方法:

步骤1

files my.cnf and my.ini. has been edited in /root/my.cnf and /root/my.ini and /etc/my.cnf as:

[mysqld]
character-set-server=utf8
collation-server=utf8_bin
default-storage-engine=INNODB
max_allowed_packet=256M
innodb_log_file_size=2GB
transaction-isolation=READ-COMMITTED
binlog_format=row

第二步,文件保存后,我以几种方式重新启动了MySQL:

Following commands DID NOT work:

# /etc/init.d/mysqld stop:  No such file or directory  
# /etc/init.d/mysql stop:  No such file or directory 
# service mysqld stop
Redirecting to /bin/systemctl start mysql.service
Failed to start mysqld.service: Unit not found.

Following commands DID work:

# service mysql stop
Redirecting to /bin/systemctl start mysql.service
# service mysql status (was Active: inactive (dead))
# service mysql start
Redirecting to /bin/systemctl start mysql.service
# service mysql status (was Active: active (running))

第三步

 mysql> SHOW ENGINES;
    +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    | Engine             | Support | Comment                                                        
    | Transactions | XA   | Savepoints |
    +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    | FEDERATED          | NO      | Federated MySQL storage engine                                 
    | NULL         | NULL | NULL       |
    | MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          
    | NO           | NO   | NO         |
    | MyISAM             | DEFAULT | MyISAM storage engine                                          
    | NO           | NO   | NO         |
    | BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
    | CSV                | YES     | CSV storage engine                                             
    | NO           | NO   | NO         |
    | MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
    | ARCHIVE            | YES     | Archive storage engine                                         
    | NO           | NO   | NO         |
    | InnoDB             | YES     | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
    | PERFORMANCE_SCHEMA | YES     | Performance Schema                                             
    | NO           | NO   | NO         |
    +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    9 rows in set (0.00 sec)

    mysql>

第四步 我尝试了以下命令,最终将InnoDB设置为默认引擎,但仍然无法正常工作,因为一旦重置mysqld,它会重新变回MyISAM是默认引擎。

SET default_storage_engine=INNODB;

这真的很令人沮丧,非常感谢您的帮助。


你在 /etc/my.cnf.d/ 目录下有任何与 mysqld 相关的配置文件吗? - imabug
在etc路径中没有"my.cnf.d",我也运行了sudo find / -name my.cnf.d,但什么都没有。还有其他建议吗? - Anthony
我非常确定它是区分大小写的。你试过用 InnoDB 代替 INNODB 吗? - Anthony
很遗憾,与大小写有关的问题已经尝试过了,但还是谢谢您。 - Anthony
2个回答

1
可以通过以下步骤实现:导航到 > phpmyadmin -> 主页-> 变量 -> 存储引擎,将其从 MyISAM 更改为 InnoDB。
请参见图片。

enter image description here


1
这是可能的,但这不是问题,因为我们不需要编辑现有的数据库。当我创建新的数据库时,我遇到了问题,如果默认存储引擎不是INNODB,则某些软件(在这种情况下是Atlassian Confluence)将无法继续安装。 - Anthony
这是关于编程的内容,请将其从英语翻译成中文。仅返回已翻译的文本:这种方式不适用于现有的数据库,它是默认的存储引擎,即使您创建任何数据库或表。 - Abdul Fattah Boshi
1
非常抱歉,我没有仔细阅读你的答案。我猜这个也可以工作。与此同时,我已经重新安装了MySQL,之后一切都正常了。 - Anthony

0

我终于解决了这个问题。我尝试了“完全卸载并重新安装相同版本的MySQL 5.6.39”,之后一切都很好。我的InnoDB已经更改为默认存储引擎=INNODB。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接