mar 15 2011

PHPMyAdmin 3.4.0 RC1 con otra apariencia: PMAHomme

Nuevo Inicio de sesión para PHPMyAdmin 3.4.0 Release Candidate 1


Luego de actualizar desde GIT a la última versión de desarrollo, me encuentro con la grata sorpresa de ver a phpMyAdmin con look renovado.


nov 10 2010

Resuelto: Error 1005: Can’t create table ‘tablename’ (errno. 121)

Recientemente, me vi en la necesidad de hacer una migración de MSAccess a MySQL (en realidad la hice a MariaDB), y cuando estuve normalizando la base de datos y agregando las relaciones respectivas me encontré con el famoso y a la vez desconocido mensaje:

Error 1005: Can’t create table ‘NombreTabla’ (errno. 121)

Este error se produce en dos situaciones (básicamente):

  1. La tabla tiene un error interno, ya sea por indexación o similares, en donde la solución es simplemente reconstruir la tabla.
  2. Al agregar una relación, no hay integridad referencial, caso en el cual, generalmente, yo asigno como valor por defecto el valor NULL al campo relacional.

Pero este no fue mi caso en esta ocasión. Todo lucía bien, reconstruí la tabla, verifiqué la integridad referencial y todo lucía perfecto. Excepto porque no podía agregar campos relacionales a varias de las tablas. Le pregunté a San Google y otros santos, sin éxito, así que decidí ponerme a la tarea de probar alternativas hasta encontrar el problema.


Para hacer la historia corta, resultó ser un pequeñísimo detalle que había pasado por alto. Recuerdo cuando aprendí Oracle en donde mi instructor me decía que los nombres de los CONSTRAINTs en Oracle son únicos y no pueden duplicarse, así que probé suerte y funcionó.


La solución es simple y la voy a ilustrar con una consulta, en donde existe una tabla Customer (me está gustando este nombre para los ejemplos) y debe hacer referencia a la tabla City por el campo cityid. Así que la consulta (según mis propios estándares de nombres y normalización quedaría algo así:

ALTER TABLE `Customer`
ADD CONSTRAINT `Customer_Cityid_fk`
FOREIGN KEY (`cityid` )
REFERENCES `City` (`id` )
ON DELETE RESTRICT
ON UPDATE CASCADE
;

La parte importante es “ADD CONSTRAINT `Customer_Cityid_fk`”. En fin, problema resuelto.

¿Alguna vez se le presentó algún error en MySQL/MariaDB que no tuviera explicación aparente?


oct 27 2010

¿Cómo redirigir a un sitio nuevo conservando la URL del sitio anterior?

Hace varios meses que no hacía migraciones de sitios a otros dominios y prácticamente había olvidado cómo realizar este proceso, pero hoy tuve la necesidad de no solo redirigir (usando un Redirect 301) sino que además debía conservar la URL del sitio anterior, es decir, de algo como:

http://www.miviejodominio.com/seccion/categoria/pagina?param1=contenido

a una nueva dirección del tipo:

http://www.nuevodominio.com/seccion/categoria/pagina?param1=contenido

Para los que usamos servidores web Apache, contamos con una solución bastante simple, rápida y sencilla (tal y como nos gusta a todos).
Así que manos a la obra: Abrimos el archivo .htaccess del directorio raiz donde está la vieja página (si no existe se crea) e ingresamos las siguientes 2 líneas (más fácil imposible :P )

RedirectMatch 301 ^(.*)$ http://www.nuevodominio.com$1
RedirectMatch permanent ^(.*)$ http://www.nuevodominio.com$1

Solo resta reemplazar “www.nuevodominio.com” por el dominio en cuestión ¡Y listo!
¿Qué otras formas de redirección conocen que sean rápidas y sencillas?


ago 19 2010

Cómo corregir la conexión inalámbrica intermitente en Ubuntu

Desde hace algunos días luego de empezar a usar una tarjeta inalámbrica USB y de realizar unas cuantas (léase muchísimas) actualizaciones a mi Ubuntu Lucid Lynx, empecé a experimentar intermitencia en la conexión inalámbrica, empecé a notar que cada 5 o 10 minutos (en algunos casos solo segundos) la conexión se reiniciaba tornándose bastante molesto debido a mi trabajo, en donde tengo que hacer uso de la conexión a internet todo el tiempo, así que decidí comenzar a preguntar a San Google sober las posibles soluciones y encontré una que me ha funcionado a la perfección y parece que a muchas más personas también (al parecer también el problema se presenta en Ubuntu Karmic Koala).
Para no andar con más rodeos, he aquí la solución:

En la Terminal digitar el siguiente comando (también se puede por synaptics, pero me encanta la Terminal :P )
sudo aptitude install linux-backports-modules-wireless-lucid-generic
En el caso de karmic es:
sudo aptitude install linux-backports-modules-wireless-karmic-generic

Nos pregunta si instalar algunos paquetes complementarios, a lo que contestamos afirmativamente, reiniciamos y… voilà, problema solucionado.

En algunos casos también será útil instalar el paquete linux-backports-modules-wireless-lucid-preempt. Espero también les sea útil.

Conversación en Ubuntu Forums


ago 4 2010

Mozilla Firefox: Refrescar la caché de archivos recientemente modificados

Hace algunos días actualicé mi versión de Firefox a la última versión Beta (al momento de escribir esta publicación era la versión 3.6.9 con nombre clave Namoroka) y además la última beta de la versión 4, en mi Ubuntu Lucid, y me encontré con muchísimas mejoras en velocidad y renderización de las páginas, además de una que otra mejora en la interfaz, pero como no todo puede ser felicidad he encontrado un pequeño cambio que en mi labor implementación de software web me afecta seriamente.
No sé si para mi desgracia (o suerte) me encontré con que el sistema de refresco de caché ha cambiado y ya no se refresca con la periodicidad como lo hacía anteriormente que detectaba un cambio en los archivos y recargaba la caché; esto es bastante útil cuando se están realizando cambios en hojas de estilos CSS, pero en la última versión, me encontré que para que Firefox no refresca al instante sino alrededor de unos dos minutos más tarde (de hecho por esta misma razón no he migrado a Google Chrome 6 alpha, porque si no, ya lo hubiera hecho hace décadas).
Como en este blog no planteamos problemas sino soluciones, he aquí la respuesta a estos inconvenientes la encontramos en la página la Red de desarrolladores de Mozilla:

  • En una pestaña nueva (Ctrl+T) escribimos en la barra de direcciones “about:config” sin las comillas
  • En el campo Filtro (o Filter) escribimos: browser.cache.check_doc_frequency
  • Hacemos doble click sobre el ítem de la lista y lo cambiamos el valor según nuestras necesidades:
    1 = Refrescar caché cada vez que se visita la página (la que necesitamos)
    0 = Una vez por sesión
    3 = Cuando la página expira (Por defecto, tendríamos que ver, qué parámetros exactamente usa Firefox para determinar que una página ha expirado)
    2 = Nunca
  • Voilà, todo listo, ya podemos modificar lo que deseemos (en mi caso las hojas de estilos) y ver reflejado el cambio al instante.

Espero les sea útil.