Jump to content

Error Mysql Al Actualizar De 1.4.9 A 1.4.10.0


Recommended Posts

Después de hacer "Install" y elegir "update" todo parece ir bien pero me dice que hay un error:

 

SET NAMES 'utf8'
/* PHP:update_module_mailalerts(); */
/* PHP:update_htaccess(); */
()
/* Backward compatibility */ INSERT INTO `ps_module` (`name`, `active`) VALUES ('backwardcompatibility', 1)
INSERT INTO `ps_hook_module` (`id_module`, `id_hook` , `position`) (SELECT id_module, 9, (SELECT max_position from (SELECT MAX(position)+1 as max_position FROM `ps_hook_module` WHERE `id_hook` = 9) tmp) FROM `ps_module` WHERE `name` = 'backwardcompatibility')
INSERT INTO `ps_hook_module` (`id_module`, `id_hook` , `position`) (SELECT id_module, 50, (SELECT max_position from (SELECT MAX(position)+1 as max_position FROM `ps_hook_module` WHERE `id_hook` = 50) tmp) FROM `ps_module` WHERE `name` = 'backwardcompatibility')
INSERT INTO `ps_hook_module` (`id_module`, `id_hook` , `position`) (SELECT id_module, 54, (SELECT max_position from (SELECT MAX(position)+1 as max_position FROM `ps_hook_module` WHERE `id_hook` = 54) tmp) FROM `ps_module` WHERE `name` = 'backwardcompatibility')
UPDATE `ps_order_state` SET `send_email` = 1 WHERE `id_order_state` = (SELECT `value` FROM `ps_configuration` WHERE `name` = 'PS_OS_WS_PAYMENT' LIMIT 1)
UPDATE `ps_order_state_lang` SET `template` = 'payment' WHERE `id_order_state` = (SELECT `value` FROM `ps_configuration` WHERE `name` = 'PS_OS_WS_PAYMENT' LIMIT 1)
ALTER TABLE `ps_county_zip_code` CHANGE `from_zip_code` `from_zip_code` VARCHAR( 12 ) NOT NULL , CHANGE `to_zip_code` `to_zip_code` VARCHAR( 12 ) NOT NULL

 

Lo intento por phpMyAdmin

introduzco el texto anterior y me muestra el siguiente error:

 

#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 '() /* Backward compatibility */ INSERT INTO `ps_module` (`name`, `active`) VALU' at line 6

 

Un saludo

Link to comment
Share on other sites

Muchas gracias,

He corregido el código como indicas:

 

SET NAMES 'utf8'
/* PHP:update_module_mailalerts(); */
/* PHP:update_htaccess(); */
/* Backward compatibility */
INSERT INTO `ps_module` (`name`, `active`) VALUES ('backwardcompatibility', 1);
INSERT INTO `ps_hook_module` (`id_module`, `id_hook` , `position`) (SELECT id_module, 9, (SELECT max_position from (SELECT MAX(position)+1 as max_position FROM `ps_hook_module` WHERE `id_hook` = 9) tmp) FROM `ps_module` WHERE `name` = 'backwardcompatibility');
INSERT INTO `ps_hook_module` (`id_module`, `id_hook` , `position`) (SELECT id_module, 50, (SELECT max_position from (SELECT MAX(position)+1 as max_position FROM `ps_hook_module` WHERE `id_hook` = 50) tmp) FROM `ps_module` WHERE `name` = 'backwardcompatibility');
INSERT INTO `ps_hook_module` (`id_module`, `id_hook` , `position`) (SELECT id_module, 54, (SELECT max_position from (SELECT MAX(position)+1 as max_position FROM `ps_hook_module` WHERE `id_hook` = 54) tmp) FROM `ps_module` WHERE `name` = 'backwardcompatibility');
UPDATE `ps_order_state` SET `send_email` = 1 WHERE `id_order_state` = (SELECT `value` FROM `ps_configuration` WHERE `name` = 'PS_OS_WS_PAYMENT' LIMIT 1);
UPDATE `ps_order_state_lang` SET `template` = 'payment' WHERE `id_order_state` = (SELECT `value` FROM `ps_configuration` WHERE `name` = 'PS_OS_WS_PAYMENT' LIMIT 1);
ALTER TABLE `ps_county_zip_code` CHANGE `from_zip_code` `from_zip_code` VARCHAR( 12 ) NOT NULL , CHANGE `to_zip_code` `to_zip_code` VARCHAR( 12 ) NOT NULL;

 

Me sale este error:

 

Error
consulta SQL:
SET NAMES 'utf8'/* PHP:update_module_mailalerts(); *//* PHP:update_htaccess(); *//* Backward compatibility */ INSERT INTO `ps_module` ( `name` , `active` )
VALUES (
'backwardcompatibility', 1
);
MySQL ha dicho: Documentación
#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 'INSERT INTO `ps_module` (`name`, `active`) VALUES ('backwardcompatibility', 1)' at line 9

Link to comment
Share on other sites

me sale este error ahora

#1062 - Duplicate entry '96-9' for key 'PRIMARY'

 

busco en la tabla "backwardcompatibility" y la encuentro 2 vecess al final

 

como ya la ha añadido, borro la última y la borro de la instrucción sql para que siga avanzando?

 

o lo compruebo todo como ahora a mano?

Edited by rojo30 (see edit history)
Link to comment
Share on other sites

Repasando la tabla "ps_order_state" hace referencia a la tabla "ps_configuration"

Repaso la tabla "ps_configuration" y no veo el campo PS_OS_WS_PAYMENT

 

Esto puede ser un problema para futuras actualizaciones.

 

Repasando la tabla "ps_county_zip_code" veo que tiene los campos correctos

Link to comment
Share on other sites

Hola.

 

Ni idea a ver si viene otro compañero y te puede ayudar.

 

En concreto se hacen 4 inserts, ¿has verificado que lo inserta?

 

Depués hace un par de updates (que habría que comprobar si los hace).

 

Y por último lo que hace es cambiar el nombre de una columna en la tabla: ps_county_zip_code

 

Yo lo que haría es revisar cada instrucción antes de seguir con la siguiente.

 

Un saludo.

Link to comment
Share on other sites

Para ver los cambios y qué hace:

 

 

INSERT INTO `ps_module` (`name`, `active`) VALUES ('backwardcompatibility', 1);

 

select pm.name,pm.active from ps_module pm where name = 'backwardcompatibility';

 

¿Qué salida te da?

 

 

INSERT INTO `ps_hook_module` (`id_module`, `id_hook` , `position`) (SELECT id_module, 9, (SELECT max_position from (SELECT MAX(position)+1 as max_position FROM `ps_hook_module` WHERE `id_hook` = 9) tmp) FROM `ps_module` WHERE `name` = 'backwardcompatibility');

 

SELECT id_module, 9, (SELECT max_position from (SELECT MAX(position)+1 as max_position FROM `ps_hook_module` WHERE `id_hook` = 9) tmp) FROM `ps_module` WHERE `name` = 'backwardcompatibility';

 

¿qué salida te da?

 

Un saludo

Link to comment
Share on other sites

a la primera pregunta:

Mostrando registros 0 - 0 ( 1 total, La consulta tardó 0.0010 seg)
SELECT pm.name, pm.active
FROM ps_module pm
WHERE name = 'backwardcompatibility'
LIMIT 0 , 30

 

a la segunda pregunta

Mostrando registros 0 - 0 ( 1 total, La consulta tardó 0.0015 seg)
SELECT id_module, 9, (
SELECT max_position
FROM (
SELECT MAX( position ) +1 AS max_position
FROM `ps_hook_module`
WHERE `id_hook` =9

 

no muestra nada mas

Edited by rojo30 (see edit history)
Link to comment
Share on other sites

Pues ahí lo tienes, en el primer insert te falla.

 

Has seleccionado la base de datos de tu tienda para hacer los inserts?

 

No sé qué te estará haciendo Phpmyadmin (que supongo que es lo que usas) pero en consola funciona perfectamente:

 

 

mysql> INSERT INTO `ps_module` (`name`, `active`) VALUES ('backwardcompatibility', 1);
Query OK, 1 row affected (0.03 sec)

mysql> SELECT id_module, 9, (SELECT max_position from (SELECT MAX(position)+1 as max_position FROM `ps_hook_module` WHERE `id_hook` = 9) tmp) FROM `ps_module` WHERE `name` = 'backwardcompatibility';
+-----------+---+-------------------------------------------------------------------------------------------------------------------+
| id_module | 9 | (SELECT max_position from (SELECT MAX(position)+1 as max_position FROM `ps_hook_module` WHERE `id_hook` = 9) tmp) |
+-----------+---+-------------------------------------------------------------------------------------------------------------------+
|	   123 | 9 |																												32 |
+-----------+---+-------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

 

Es muy sencillo, tienes que estar fallando en una coma mal interpretada o algo porque es un simple insert en la tabla ps_module.

 

Reescribe la sentencia no la copies y pegues.

 

Un saludo

Link to comment
Share on other sites

pero este primer insert está bien creo.

en la tabla aparece este campo con sus dos valores:

name: backwardcompatibility

active: 1

si aparece no estaría correctamente introducido?

estaba el último de la tabla.

gracias y un saludo,

Link to comment
Share on other sites

¿Pero no habías puesto más arriba esto?

 

 

Mostrando registros 0 - 0 ( 1 total, La consulta tardó 0.0010 seg)

SELECT pm.name, pm.active

FROM ps_module pm

WHERE name = 'backwardcompatibility'

LIMIT 0 , 30

 

Eso es que No te lo había insertado, si lo ha insertado correctamente pasa a la segunda consulta que te he puesto, tiene que salirte un resultado como el mío.

 

Un saludo

Link to comment
Share on other sites

igual no lo ha insertado, porque ya se habría hecho anteriormente? (estar, está en la tabla metido)

dado por solucionado el primer INSERT.

 

Lo que no entiendo del todo bien, es el significado del segundo y tercero INSERT, ya que veo dos tablas...

Link to comment
Share on other sites

Hola.

 

Siguiente consulta:

 

 

INSERT INTO `ps_hook_module` (`id_module`, `id_hook` , `position`) (SELECT id_module, 9, (SELECT max_position from (SELECT MAX(position)+1 as max_position FROM `ps_hook_module` WHERE `id_hook` = 9) tmp) FROM `ps_module` WHERE `name` = 'backwardcompatibility');

 

 

Lo que hace es insertar en ps_hook_module los valores de este SELECT:

 

 

SELECT id_module, 9, (SELECT max_position from (SELECT MAX(position)+1 as max_position FROM `ps_hook_module` WHERE `id_hook` = 9) tmp) FROM `ps_module` WHERE `name` = 'backwardcompatibility';

 

 

Prueba y dinos qué tal.

 

Un saludo

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...