Archivos de la categoría: SQL

Truncate tabla sin hacer validacion de foreign constraints

Hola Mundo:

¿Cómo les va? Hace tiempo que no pasaba por aquí, porque he estado ocupado desarrollando
productos propios.

El tema de hoy hace referencia a un problema típico de bases de datos, específicamente cuando se quiere hacer un truncate a una tabla que es referenciada desde otras. Al existir restricciones no se puede hacer ni un truncate, ni drop ni delete, aun así cuando la tabla que la referencia está vacía.

Para este caso hay dos opciones:
1) Eliminar los constraint, hacer la operación y luego volver a crear los constraint
2) Desactivar la operación de comprobación de constraint, hacer la operación y volver activarlo.

La opción 2 es una buena medida, que debe ser usada solo en ambiente de laboratorio. El código es el  siguiente

SET FOREIGN_KEY_CHECKS = 0; 
TRUNCATE table1; 
TRUNCATE table2; 
SET FOREIGN_KEY_CHECKS = 1; 

Y eso es todo

“No tiene los permisos necesarios para acceder a esta página” en WordPress

¡Esta migración de WordPress me ha sacado canas verdes! Esto se está volviendo más o menos complicado, pero no me las ganará.

Cuando levanté la DB, tuve muchos problemas con la tabla de wp_options así que decidí a copiar tabla por tabla, para ver si habían otras que me daban problemas.

En la misma base de datos había levantado el respaldo, tenía una instalación limpia de WordPress. Hice un volcado de tablas, una a una hasta que lo hice con la tabla wp_usermeta.

Como tenía dos instalaciones en la misma base de datos, lo más lógico es que tuvieran preifijos distintos para poder distinguirlas entre ellas.

Cuando realicé el volcado de la tabla, después al entrar al portal para probar los nombres de usuario vi el mensaje de error:

No tiene los permisos necesarios para acceder a esta página

La tabla wp_usermeta guarda el prefijo de las tablas de la instalación de WordPress, así que con esta consulta reemplacé el antiguo prefijo por el nuevo prefijo que estaba almacenado en la tabla
UPDATE `newprefix_usermeta` SET `meta_key` = REPLACE(`meta_key`, 'wp_', 'newprefix_');
Donde newprefix es el nuevo prefijo de la tabla y wp_ es el antiguo prefijo.

Con esto ya pude entrar al portal y a la administracion.

🙂

Copiar tablas completas con Pentaho Data Integrator

¡Que taaal! Tiki tiki tí Publicando este artículo bien diciochero jeje.

Hoy les contaré sobre como realizar copias de tablas usando Pentaho Data Integrator, que es una herramienta gratuita, multiplataforma y de código abierto para construir paquetes ETL.

Es bastante potente y no tiene mucho que envidiar a otras que son de paga, por ejemplo, SQL Server Integration Services e Informatica.

Tiene bastantes asistentes que ayudan con las tareas y en este caso usaremos un asistente.

  1. Crear la conexión a la base de datos de origen y  de destino
  2. Ir a Tools -> Wizard -> Copy Table
  3. Seleccionar la conexión base de datos de origen y de destino

    Conexion de Origen y de Destino

    Conexion de Origen y de Destino

  4. Luego se hace la selección de la tabla que se quiere copiar

    Seleccion de Tabla

    Seleccion de Tabla

  5. Aunque ya se ha definido la conexión de destinoi (DB, Usuario, Password, Host) queda configurar el esquema, por lo menos para este caso que el RDBMS es MySQL, es por esto que hay que configurar el step
    Editar el step

    Editar el step

    Además, hay que ejecutar la consulta de creación de tabla. Para esto, hacer click en el botón SQL y ejecutar la sentencia que aparece ahí. Si esto no se hace, arrojará un error de que no se encuentra la tabla y la tarea no terminará de forma satisfactoria.

    SQL Query

    SQL Query

  6. Una vez que está todo configurado, se procede a ejecutar el flujo

    Ejecutar Proceso

    Ejecutar Proceso

  7. Se abrirá la ventana de configuración de la ejecución. En este caso, nada más se hace click en launch

    Ejecutar Proceso

    Ejecutar Proceso

Si todo se ha configurado bien, el proceso durará según el tamaño de la tabla y si es una base de datos externa, de la conexión con el servidor.

Espero que les sirva!