rojo30 Posted February 23, 2013 Share Posted February 23, 2013 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 More sharing options...
oka Posted February 23, 2013 Share Posted February 23, 2013 /* PHP:update_module_mailalerts(); */ /* PHP:update_htaccess(); */ () /* Backward compatibility */ Borra lo que está en rojo y añade un ; al final de cada instrucción. Un saludo. Link to comment Share on other sites More sharing options...
rojo30 Posted February 25, 2013 Author Share Posted February 25, 2013 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 More sharing options...
oka Posted February 25, 2013 Share Posted February 25, 2013 Te falta un ; en la primera instrucción, y por si acaso, borra los comentarios /* */ Un saludo Link to comment Share on other sites More sharing options...
rojo30 Posted February 25, 2013 Author Share Posted February 25, 2013 (edited) Tengo la versión de mysql 5.5.24 gracias otra vez voy a probar Edited February 25, 2013 by rojo30 (see edit history) Link to comment Share on other sites More sharing options...
rojo30 Posted February 25, 2013 Author Share Posted February 25, 2013 (edited) 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 February 25, 2013 by rojo30 (see edit history) Link to comment Share on other sites More sharing options...
oka Posted February 25, 2013 Share Posted February 25, 2013 En qué instrucción te da ese error, es decir mete una por una y dinos dónde te da el error. Un saludo Link to comment Share on other sites More sharing options...
rojo30 Posted February 25, 2013 Author Share Posted February 25, 2013 (edited) me da el mismo error en las cuatro primeras he parado antes de seguir con las UPDATE La primera es facil de entender, pero las otras no las entiendo. Voy a la tabla y como son todo números no me aclaro. Edited February 25, 2013 by rojo30 (see edit history) Link to comment Share on other sites More sharing options...
oka Posted February 25, 2013 Share Posted February 25, 2013 Si no puede hacer el insert es que ya tienes ese valor metido en las tablas, sigue con los updates (ojo espero que estés haciendo backups de la BBDD antes de seguir tocando registros a pelo.) Un saludo Link to comment Share on other sites More sharing options...
rojo30 Posted February 25, 2013 Author Share Posted February 25, 2013 (edited) Si hice una copia antes de la actualización voy a hacer ahora otra antes del update Pero no debería encontrar y borrar los campos repetidos.? Edited February 25, 2013 by rojo30 (see edit history) Link to comment Share on other sites More sharing options...
rojo30 Posted February 25, 2013 Author Share Posted February 25, 2013 después de ejecutar las siguientes líneas UPDATE detrás de cada una me sale el siguiente mensaje: # MySQL ha devuelto un conjunto de valores vacío (es decir: cero columnas). Link to comment Share on other sites More sharing options...
rojo30 Posted February 25, 2013 Author Share Posted February 25, 2013 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 More sharing options...
oka Posted February 25, 2013 Share Posted February 25, 2013 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 More sharing options...
rojo30 Posted February 26, 2013 Author Share Posted February 26, 2013 Muchas gracias por todo. Ha algunas líneas que no entiendo bien. Link to comment Share on other sites More sharing options...
oka Posted February 26, 2013 Share Posted February 26, 2013 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 More sharing options...
rojo30 Posted February 26, 2013 Author Share Posted February 26, 2013 (edited) 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 February 26, 2013 by rojo30 (see edit history) Link to comment Share on other sites More sharing options...
oka Posted February 26, 2013 Share Posted February 26, 2013 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 More sharing options...
rojo30 Posted February 27, 2013 Author Share Posted February 27, 2013 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 More sharing options...
oka Posted February 27, 2013 Share Posted February 27, 2013 ¿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 More sharing options...
rojo30 Posted February 28, 2013 Author Share Posted February 28, 2013 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 More sharing options...
oka Posted February 28, 2013 Share Posted February 28, 2013 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 More sharing options...
Recommended Posts