phpMyAdmin 显示数据库是 MyISAM 但表是 InnoDB

phpMyAdmin 显示数据库是 MyISAM 但表是 InnoDB

数据库有可能是一种类型(MyISAM),而表则是另一种类型(InnoDB),还是这是 phpMyAdmin 中的一个错误?

它确实表明了这一点。 图片在此 http://www.startbreakingfree.com/wp-content/uploads/2009/11/Picture-10.png

我尝试通过命令验证数据库类型,但找不到正确的命令来显示它。如果数据库实际上是 MyISAM,我该如何将其更改为 InnoDB?

谢谢你!

答案1

数据库没有存储引擎,只有表才有。我不知道 PhpMyAdmin 试图在那里表明什么,也许是系统范围的默认引擎之类的。文档大概会揭示到底发生了什么。

答案2

这不是一个错误。从MySQL 文档

数据库可能包含不同类型的表。也就是说,表不必都使用相同的存储引擎创建。

所以你很好。

要查看表格类型:

SHOW CREATE TABLE schema_migration

查看数据库存储引擎:

mysqldump --no-data $YOURDATABASE

答案3

唯一的缺陷是 PhpMyAdmin 根本就不显示数据库的任何内容,因为在该上下文中显示的任何内容都是无关紧要的。正如 womble 所建议的,它可能指示默认引擎(和编码),但我建议您忽略它,只关注用于表的引擎。毕竟,数据库只不过是表的逻辑集合。

答案4

@womble 是对的。但是,如果你想要更省心,你可以设置一些配置选项。你的 mysql 配置文件my.cnf,如果你使用的是 XAMPP,则位于/Applications/XAMPP/etc/my.cnf,如果你使用的是标准安装,则通常位于/etc/my.cnf,其中有一个名为 [mysqld] 的部分

默认存储引擎是 MyISAM,但您可以通过在该部分下添加以下内容将其更改为 InnoDB:

[mysqld]
默认存储引擎 = innodb

这将改变最后一行显示的内容:

如果您花时间确保您的数据库确实设置好,您可能对将字符集设置为 utf-8 的其他一些项目感兴趣,因为它通常被视为 Web 开发的最佳实践:

在位于 phpmyadmin 文件夹中的 config.inc.php 中,您可以设置以下参数:

// 默认使用 utf_8(pma 新版本中的标准值)
// ****************************************************************************
$cfg['默认字符集'] = 'utf_8';


//设置默认排序规则(新版本中默认为 utf8_general_ci)
// *********************************************************************
$cfg['默认连接排序规则'] = 'utf8_general_ci';


//使用 mysqli 以确保安全,并读取通常以 BLOB 类型显示的 utf
// *****************************************************************************
$cfg['服务器'][$i]['扩展'] = 'mysqli';

您可以通过访问百科或者通过查看(但不改变!)此文件中的值:phpmyadmin/libraries/config.default.php

使用 utf-8 是 Web 应用程序的新推荐标准,尤其是对于用户可能使用不同语言/键盘集输入单词的应用程序。请查看此 utf8_bin 和 utf8_general_ci 字符集之间的一些差异很棒的小帖子这应该可以帮助您选择正确的一个。

相关内容