2009-12-10 6 views
9

J'ai fait un nettoyage et restaurer.Je ne peux pas convertir myISAM à innodb

  1. J'ai sauvegardé mes tables innodb actuelles. (mysqldump)
  2. Je l'ai chargé dans la base de données.
  3. Pour une raison quelconque ... les tables sont maintenant toutes myisam au lieu d'innodb ... bizarre!
  4. J'essaie de faire:

    TABLEAU xxx ALTER MOTEUR = InnoDB;

Et il ne fait rien à n'importe quelle table.

"Afficher le statut de table" est toujours "MyISAM"

mysql> alter table auth_user_user_permissions engine=innodb; 
Query OK, 0 rows affected, 1 warning (0.06 sec) 
Records: 0 Duplicates: 0 Warnings: 0 



+------------+----------+----------------------------------------------------------------+ 
| Engine  | Support | Comment              | 
+------------+----------+----------------------------------------------------------------+ 
| MyISAM  | DEFAULT | Default engine as of MySQL 3.23 with great performance   | 
| MEMORY  | YES  | Hash based, stored in memory, useful for temporary tables  | 
| InnoDB  | DISABLED | Supports transactions, row-level locking, and foreign keys  | 
| BerkeleyDB | NO  | Supports transactions and page-level locking     | 
| BLACKHOLE | YES  | /dev/null storage engine (anything you write to it disappears) | 
| EXAMPLE | NO  | Example storage engine           | 
| ARCHIVE | YES  | Archive storage engine           | 
| CSV  | YES  | CSV storage engine            | 
| ndbcluster | DISABLED | Clustered, fault-tolerant, memory-based tables     | 
| FEDERATED | DISABLED | Federated MySQL storage engine         | 
| MRG_MYISAM | YES  | Collection of identical MyISAM tables       | 
| ISAM  | NO  | Obsolete storage engine          | 
+------------+----------+----------------------------------------------------------------+ 



# * InnoDB 
# 
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/. 
# Read the manual for more InnoDB related options. There are many! 
# You might want to disable InnoDB to shrink the mysqld process by circa 100MB. 
#skip-innodb 

innodb_buffer_pool_size = 10000M 
innodb_additional_mem_pool_size = 20M 
innodb_log_file_size=1024M 
innodb_log_buffer_size=8M 
innodb_flush_log_at_trx_commit = 0 


mysql> alter table auth_group engine=innodb; 
Query OK, 0 rows affected, 1 warning (0.05 sec) 
Records: 0 Duplicates: 0 Warnings: 0 

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

Ceci est un longhot, mais est-il possible que votre nouvelle installation de MySQL n'inclut pas le support d'InnoDB? Pour voir les moteurs pris en charge, lancez la requête suivante: 'show engines;'. Quelle est la sortie? – Asaph

+0

Je vois que vous avez inclus une mise à jour montrant qu'il y a un avertissement. Quelle est la sortie de la requête suivante: 'show warnings;' – Asaph

+0

Les anciennes versions de MySQL n'ont pas InnoDB activé par défaut. Quelle version de MySQL utilisez-vous? Quelle est la sortie de la requête suivante: 'select version();'? – Asaph

Répondre

10

Je vois dans votre show engines sortie qui InnoDB est désactivé dans votre MySQL installer. Vous devez l'activer pour pouvoir convertir vos tables de MyISAM en InnoDB.

+1

Comment l'activer? – TIMEX

+0

@alex: Quelle version de MySQL utilisez-vous? Vérifiez avec 'select version(); – Asaph

+0

@alex: Y a-t-il des entrées dans le journal des erreurs MySQL (au démarrage, peut-être) qui semblent être liées au support d'InnoDB? – Asaph

Questions connexes