Табличный движок MySQL не обновляется (или обновление не отображается) - PullRequest
2 голосов
/ 10 октября 2011

У меня большая база данных MySQL с более чем 400 таблицами.Почти все таблицы необходимо изменить на InnoDB в соответствии с требованиями платформы.

Я выполняю следующий запрос, чтобы увидеть текущие механизмы таблиц для базы данных:

 SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES where TABLE_SCHEMA = 'DATABASE_NAME';

У меня естьсоздал плоский файл со списком всех таблиц с правильным синтаксисом «ALTER TABLE»:

 ALTER TABLE  wishlist_item ENGINE=InnoDB;
 ...etc...

Я запустил этот файл со следующим синтаксисом:

mysql -u USERNAME -pPASSWORD DATABASE_NAME < alter_staging_tables.txt

Однако, когда я запускаю:

 SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES where TABLE_SCHEMA = 'DATABASE_NAME';

Он по-прежнему показывает ВСЕ таблицы как MyISAM, несмотря на мой файл, запущенный и меняющий типы движка.Я даже вошел, запустил один изменяющий вручную:

mysql> ALTER TABLE  zendesk ENGINE=InnoDB;
Query OK, 8 rows affected, 1 warning (0.00 sec)
Records: 8  Duplicates: 0  Warnings: 0

Но когда я делаю выбор:

| zendesk                                           | MyISAM | 

Он показывает таблицу как неподвижный MyISAM.Что я делаю неправильно?TIA.

Обновление: версия MySQL:

mysql -v
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 306675
Server version: 5.0.77-log Source distribution

Обновление: значит, изменение НЕ прилипает:

mysql> ALTER TABLE  zendesk ENGINE=InnoDB;
Query OK, 8 rows affected, 1 warning (0.00 sec)
Records: 8  Duplicates: 0  Warnings: 0

mysql> show warnings;
+---------+------+-------------------------------------------------+
| Level   | Code | Message                                         |
+---------+------+-------------------------------------------------+
| Warning | 1266 | Using storage engine MyISAM for table 'zendesk' | 
+---------+------+-------------------------------------------------+
1 row in set (0.00 sec)

1 Ответ

3 голосов
/ 10 октября 2011

Вы уверены, что InnoDB включен? Вы можете проверить с помощью ПОКАЗАТЬ ДВИГАТЕЛИ .

Обратите внимание, что по умолчанию MySQL просто игнорирует нераспознанные директивы ENGINE и выдает предупреждение (если вы не установили NO_ENGINE_SUBSTITUTION ). Ваша команда ALTER TABLE выдала одно предупреждение, возможно, из-за этого:

mysql> ALTER TABLE  zendesk ENGINE=InnoDB;
Query OK, 8 rows affected, 1 warning (0.00 sec)
...