2009-12-13 7 views
1

Je suis nouveau sur joomla et je viens de découvrir qu'il utilise le moteur de base de données myISAM par défaut.Rendre joomla utiliser innoDB et soutenir la transaction

J'ai déjà effectué une recherche dans le répertoire joomla et dans le répertoire des extensions, et même dans google, mais je n'ai obtenu aucun résultat utile. Puisque joomla est une si grande communauté, je ne suis pas sûr pourquoi personne ne semble avoir une réponse à cela.

Je voudrais savoir s'il existe une distribution/extension bien connue qui permettra à joomla d'utiliser innodb de telle sorte qu'il puisse supporter la transaction. Si ce n'est pas le cas, j'aimerais quand même savoir à quel point ce serait difficile si cela devait être fait.

+1

Les temps ont changé. http://docs.joomla.org/J3.2:Installing_Joomla#cite_note-MySQL6.0-1 – CrandellWS

Répondre

3

Vous pouvez toujours aller à installation/sql/mysql/joomla.sql et modifier toutes les instances de TYPE=MyISAM en TYPE=InnoDB juste avant d'installer Joomla. Cependant, il n'y a pas de requêtes dans les composants Joomla de base qui tirent parti des transactions. Bien que vous puissiez coder vos propres composants pour ce faire, la fonctionnalité principale de Joomla ne le serait toujours pas. De plus, si vous ne l'avez pas encore remarqué, les composants Joomla principaux verrouilleront les lignes de certaines tables. Il le fait en définissant un drapeau désignant l'ID de l'utilisateur qui édite actuellement l'élément. Pas idéal, mais cela permet d'éviter les conflits lorsque les utilisateurs utilisent des moteurs de base de données non transactionnels.

+0

@jilleblanc: Est-ce correct que presque toutes les extensions disponibles sur le site web de joomla supposent l'utilisation du moteur MyISAM? Si les tables de base de données joomla utilisent innoDB, y aura-t-il beaucoup de problèmes de compatibilité lors de l'installation de ces extensions? Est-ce commun pour les développeurs de joomla de le faire, ou ils aiment simplement utiliser le moteur MyISAM? – bobo

+0

La plupart des extensions supposent MyISAM ou ne spécifient pas de moteur dans leurs fichiers d'installation SQL. Le noyau est toujours supposé être MyISAM. J'ai eu des installations avec les deux tables MyISAM et InnoDB côte à côte sans problèmes de compatibilité (mais pas nécessairement une situation idéale non plus). La plupart des développeurs d'extensions Joomla 3PD sont inconscients des moteurs de base de données. – jlleblanc

1

Je ne suis pas sûr qu'il soit logique de forcer l'utilisation d'un type de moteur db. Il est plus logique d'autoriser l'administrateur qui installe Joomla à sélectionner le type de moteur. Joomla va juste prendre la valeur par défaut si rien n'est spécifiquement défini. Vous pouvez modifier votre moteur de stockage par défaut en modifiant votre configuration mySQL ou en utilisant les paramètres de démarrage pour modifier la configuration par défaut.

Voir: http://dev.mysql.com/doc/refman/5.0/en/storage-engines.html

+1

Non, Joomla ne prendra pas la valeur par défaut: il spécifie MyISAM dans l'installation SQL. Bien sûr, MySQL l'ignorera s'il est configuré pour utiliser InnoDB exclusivement. – jlleblanc

1

InnoDB n'a pas été stable lorsque Joomla a été écrit et réécriture entièrement il peut causer des problèmes pour certains utilisateurs finaux.

1

joomla utilise les index de recherche FULLTEXT qui ne sont pas pris en charge par InnoDB, dès que vous déployez joomla sur MYSQL avec InnoDB il se plaindra que la recherche FULLTEXT ne sont pas pris en charge par InnoDB

Questions connexes