Clicky

Error 1064 MySQL TYPE=MyISAM

JInstaller::install: Error SQL. DB function failed with error number 1064

Componente Instalar: Error SQL. Archivo SQL no legible o desaparecido. DB function failed with error number 1064

mysql logoAl intentar actualizar el componente de Joomla! (en versión 1.5.26) AlphaContent (versión 4.0.18) me saltaba un error de la base de datos MySQL.

Estamos otra vez en conflicto con los desarrolladores que no actualizan los archivos de instalación de sus componentes, como en el caso que vimos hace unos días del bug en el componente Xmap.

En este caso el culpable o culpables son Alphaplug que han desarrollado varios componentes, entre ellos este AlphaContent, y cuyo administrador es un tal Bernard.

El error que daba el administrador de Joomla! era el siguiente:

JInstaller::install: Error SQL. DB function failed with error number 1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server 

version for the right syntax to use near 'TYPE=MyISAM' at 

line 11 SQL=CREATE TABLE IF NOT EXISTS `jos_alpha_rating`

( `ref` int(11) NOT NULL auto_increment, `id` int(11) NOT NULL default '0', `total_votes` int

(11) NOT NULL default '0', `total_value` int(11) NOT NULL default '0',

 `used_ips` longtext NOT NULL default '', `component` varchar(30) NOT NULL default 

'', `cid` int(11) NOT NULL default '0', `rid` int(11) NOT NULL default '0',

 PRIMARY KEY (`ref`) ) TYPE=MyISAM;
SQL = 
CREATE TABLE IF NOT EXISTS `jos_alpha_rating` (
  `ref` int(11) NOT NULL auto_increment,
  `id` int(11) NOT NULL default '0',
  `total_votes` int(11) NOT NULL default '0',
  `total_value` int(11) NOT NULL default '0',
  `used_ips` longtext NOT NULL default '',
  `component` varchar(30) NOT NULL default '',
  `cid` int(11) NOT NULL default '0',
  `rid` int(11) NOT NULL default '0',
  PRIMARY KEY  (`ref`)
) TYPE=MyISAM;

Componente Instalar: Error SQL. Archivo SQL no legible o desaparecido.

DB function failed with error number 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server 

version for the right syntax to use near 'TYPE=MyISAM' at 

line 11 SQL=CREATE TABLE IF NOT EXISTS `jos_alpha_rating` 

( `ref` int(11) NOT NULL auto_increment, `id` int(11) NOT NULL default '0', `total_votes` int

(11) NOT NULL default '0', `total_value` int(11) NOT NULL default '0',

 `used_ips` longtext NOT NULL default '', `component` varchar(30) NOT NULL default 

'', `cid` int(11) NOT NULL default '0', `rid` int(11) NOT NULL default '0',

 PRIMARY KEY (`ref`) ) TYPE=MyISAM;
SQL = 
CREATE TABLE IF NOT EXISTS `jos_alpha_rating` (
  `ref` int(11) NOT NULL auto_increment,
  `id` int(11) NOT NULL default '0',
  `total_votes` int(11) NOT NULL default '0',
  `total_value` int(11) NOT NULL default '0',
  `used_ips` longtext NOT NULL default '',
  `component` varchar(30) NOT NULL default '',
  `cid` int(11) NOT NULL default '0',
  `rid` int(11) NOT NULL default '0',
  PRIMARY KEY  (`ref`)
) TYPE=MyISAM;

Como en el caso de Xmap, Bernard tiene en el foro de Alphaplug la solución al problema (en inglés) y pasa por no actualizar una instrucción de SQL para indicar el motor MyISAM (la tecnología de almacenamiento de datos usada por defecto por el sistema administrador de bases de datos relacionales MySQL) que está obsoleta para las versiones superiores a 5.5 de MySQL.

La solución pasa por cambiar TYPE=MyISAM por ENGINE=MyISAM en tres archivos que están estas rutas del pack de instalación de AlphaContent:

/install.alphacontent.php
/backend/install.mysql.sql
/backend/install.mysql.utf8.sql

Hay que dejarlos así:

install.alphacontent.php  (sobre la línea 77)

 

if (!$db->query()) {            
        $query = "CREATE TABLE IF NOT EXISTS `#__alpha_rating` (
          `ref` int(11) NOT NULL auto_increment,
          `id` int(11) NOT NULL default '0',
          `total_votes` int(11) NOT NULL default '0',
          `total_value` int(11) NOT NULL default '0',
          `used_ips` longtext NOT NULL default '',
          `component` varchar(30) NOT NULL default '',
          `cid` int(11) NOT NULL default '0',
          `rid` int(11) NOT NULL default '0',
          PRIMARY KEY  (`ref`)
        ) ENGINE=MyISAM;";
        $db->setQuery( $query );
        $db->query();

     
install.mysql.sql

CREATE TABLE IF NOT EXISTS `#__alpha_rating` (
  `ref` int(11) NOT NULL auto_increment,
  `id` int(11) NOT NULL default '0',
  `total_votes` int(11) NOT NULL default '0',
  `total_value` int(11) NOT NULL default '0',
  `used_ips` longtext NOT NULL default '',
  `component` varchar(30) NOT NULL default '',
  `cid` int(11) NOT NULL default '0',
  `rid` int(11) NOT NULL default '0',
  PRIMARY KEY  (`ref`)
) ENGINE=MyISAM;


install.mysql.utf8.sql

CREATE TABLE IF NOT EXISTS `#__alpha_rating` (
  `ref` int(11) NOT NULL auto_increment,
  `id` int(11) NOT NULL default '0',
  `total_votes` int(11) NOT NULL default '0',
  `total_value` int(11) NOT NULL default '0',
  `used_ips` longtext NOT NULL default '',
  `component` varchar(30) NOT NULL default '',
  `cid` int(11) NOT NULL default '0',
  `rid` int(11) NOT NULL default '0',
  PRIMARY KEY  (`ref`)
) ENGINE=MyISAM;


Yo he modificado estos archivos y vuelto a comprimir en zip todo el instalador del componente AlphaContent para que no haya problemas con la instalación (Marcar el archivo en SkyDrive y botón derecho, descargar).

 

Jesus_Caceres