phpMyAdmin показывает базу данных MyISAM, но таблицы InnoDB
Возможно ли, чтобы база данных была одного типа (MyISAM), а таблицы - другого типа (InnoDB), или это ошибка в phpMyAdmin?
Это показывает именно это. http://www.startbreakingfree.com/wp-content/uploads/2009/11/Picture-10.png
Я попытался проверить тип базы данных из команды, но не смог найти подходящую команду для ее отображения. Если база данных на самом деле MyISAM, как я могу изменить ее на InnoDB?
Спасибо!
5 ответов
Базы данных не имеют механизмов хранения, только таблицы. Я понятия не имею, что PhpMyAdmin пытается там указать, возможно, общесистемный движок по умолчанию или что-то в этом роде. Документация, вероятно, пролила бы некоторый свет на происходящее WTF.
Это не ошибка. Из документации MySQL:
База данных может содержать таблицы разных типов. То есть таблицы не обязательно должны быть созданы с одним и тем же механизмом хранения.
Так что ты в порядке.
Чтобы увидеть тип таблицы:
SHOW CREATE TABLE schema_migration
Чтобы увидеть механизм хранения базы данных:
mysqldump --no-data $YOURDATABASE
Единственная ошибка в том, что PhpMyAdmin вообще что-то показывает для базы данных, потому что все, что он показывает в этом контексте, не имеет значения. Как предполагает womble, он может указывать на механизм по умолчанию (и кодировку), но я предлагаю вам игнорировать его и интересоваться только механизмом, используемым для таблиц. В конце концов, база данных - это чуть больше, чем логическая коллекция таблиц.
Да , мы можем создать 2 вида таблиц в phpmyadmin, я создал таблицы InnoDB и MyISAM в моей базе данных. Это то, что вы хотите. Спасибо
@womble прав. Однако, если вы хотите немного спокойствия, вы можете установить несколько параметров конфигурации. Ваш конфигурационный файл mysql, my.cnf
, который, если вы используете XAMPP находится по адресу /Applications/XAMPP/etc/my.cnf
или, если вы используете стандартную установку, обычно находится по адресу /etc/my.cnf
, имеет раздел под названием [mysqld]
Движком хранилища по умолчанию является MyISAM, но вы можете изменить его на InnoDB, добавив его в этот раздел:
[ТуздЫ] default-storage-engine = innodb
Это изменит то, что появляется в этом последнем ряду:
Если вы не торопитесь, чтобы убедиться, что ваша база данных действительно настроена правильно, вас могут заинтересовать еще несколько пунктов, касающихся установки набора символов в utf-8, потому что это обычно рассматривается как лучшие практики для веб развитие:
В вашем config.inc.php, который находится в вашей папке phpmyadmin, вы можете установить следующие параметры:
// используем utf_8 по умолчанию (стандартные значения в более новых версиях pma) // ************************************************ ******************* $ cfg ['DefaultCharset'] = 'utf_8'; // устанавливаем сортировку по умолчанию (utf8_general_ci по умолчанию в более новых версиях) // ************************************************ ********************* $ cfg ['DefaultConnectionCollation'] = 'utf8_general_ci'; // используем mysqli для обеспечения безопасности и, читая utf, обычно отображаются с типом BLOB // ***************************************************************************** $cfg['Servers'][$i]['extension'] = 'mysqli';
Вы можете найти все параметры конфигурации, посетив PmaWiki или посмотрев (но не изменив!) Значения в этом файле: phpmyadmin/libraries/config.default.php
,
Использование utf-8 - это новый рекомендуемый стандарт с веб-приложениями, особенно для приложений, где пользователи могут вводить слова на разных языках / наборах клавиатуры. Посмотрите на некоторые различия между наборами символов utf8_bin и utf8_general_ci в этом милом небольшом посте, который должен помочь вам выбрать правильный.