Cómo cambiar las URLs en la base de datos cuando la web en wordpress es migrada a otro servidor

Si migramos nuestra web a otro servidor podemos encontrarnos con el problema en la base de datos de que sigue apuntando a las urls de la web antigua. Para solucionarlo podemos usar el phpmyadmin y ejecutar las siguientes sentencias:

UPDATE wp_options SET option_value = replace(option_value, 'http://www.oldurl', 'http://www.newurl') WHERE option_name = 'home' OR option_name = 'siteurl';

UPDATE wp_posts SET guid = replace(guid, 'http://www.oldurl','http://www.newurl');

UPDATE wp_posts SET post_content = replace(post_content, 'http://www.oldurl', 'http://www.newurl');

UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://www.oldurl','http://www.newurl');

En nuestro caso esto nos ha funcionado siempre, pero quizás en determinadas circunstancias de un error o tengas que modificar más tablas para cambiar todas las URLs.

Cómo solucionar error utf8mb4_unicode_520_ci

Cuando migramos una web de wordpress a otro servidor, en el proceso de importar la base de datos en archivo .sql o comprimido en el nuevo servidor por phpmyadmin podemos encontrarnos un error como utf8mb4_unicode_520_ci, que si tenemos la web en inglés sería: Unknown collation: ‘utf8mb4_unicode_520_ci’.

Para solucionarlo tenemos que editar el archivo .sql con el editor Notepad++ y remplazando todas las palabras utf8mb4_unicode_520_ci a utf8mb4_unicode_ci, entonces salvamos el archivo y lo volvemos a importar. Ya no nos dará ese error.

Sintaxis correcta en SQL con una variable en una igualdad dentro del WHERE

SQLA veces el código puede funcionar y todo se ve bien, pero revisándolo con el Putty, por ejemplo, vemos que nos dice:

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 » at line …

Analizo el código que tenía y encuentro:

$select=»SELECT ————- FROM——— WHERE id=$otraid«;

El error está en la sintaxis de la variable en la igualdad en el WHERE, debemos ponerla entre comillas simples ‘$otraid’

Es decir, el error se corrige así:

$select=»SELECT ————- FROM——— WHERE id=‘$otraid’«;

Usar ORDER BY en SQL

Una de las claúsulas que podemos utilizar en SQL es ORDER, el cual usamos para especificar el orden, cuya sintaxis es primero «ORDER BY» y luego una lista de Campos que definirán los campos a ordenar:

La síntaxis es la siguiente:
SELECT campo1, campo2, campo3, campo4 FROM Clientes ORDER BY campo_ordenar_primero, campo_ordenar_segundo

Incluso se puede especificar el orden de los registros:

  • ASC: ascendente (valor que toma por defecto si no se especifica)
  • DESC: descendente

Veamos unos ejemplos:

SELECT * FROM nombre_tabla ORDER BY campo1, campo3, campo8Esta sintaxis nos va a seleccionar todos los registros de la tabla y los traerá ordenados de la manera específica que le solicitamos, es decir primero se ordenarán por el «campo1», luego ante la igualdad de este se decidirá el orden por el segundo campo en la lista de campos especificada luego de la cláusula ORDER BY, es decir el campo de nombre «campo3», para finalizar ordenando por el «campo8» como tercer y último criterio.SELECT * FROM nombre_tabla ORDER BY campo8, campo1, campo2

Esta sintaxis nos va a seleccionar todos los registros de la tabla y pero ahora los traerá ordenados primero por el «campo8», luego ante la igualdad de este se decidirá el orden por el segundo campo en la lista es decir el campo de nombre «campo1», para finalizar ordenando por el «campo2» como último criterio.
En definitiva el orden que aparecen en la lista, otorga la prioridad en el ordenamiento de los registros, desde el primero de mayor prioridad hasta el último.

Estos dos ejemplos anteriores toman por defecto un ordenamiento ascendente de los registros, seria lo mismo que colocar la cláusula ASC en todos los casos:

SELECT * FROM nombre_tabla ORDER BY campo1 ASC, campo3 ASC, campo8 ASC
SELECT * FROM nombre_tabla ORDER BY campo8 ASC, campo1 ASC, campo2 ASC

Si hubiésemos querido lo contrario tendríamos que haber colocado la cláusula DESC para lograr un orden descendente como ya dijimos, y se puede utilizar logicamente una o la otra en un mismo campo, pero cualquiera de las dos puede ser utilizada en otro campo del mismo listado como por ejemplo:

SELECT * FROM nombre_tabla ORDER BY campo1 DESC, campo3 ASC, campo8 DESC

Hay que tener en cuenta que el orden no distingue entre mayúsculas y minúsculas para el caso que se trate de letras, en este caso se realiza un orden simplemente alfabético, mientras que los números tienen menor orden que las letras, quedando por delante de éstas, así mismo los distintos símbolos y signos de puntuación, tienen menor orden que los números.

Por ejemplo ordenando de menor a mayor (de manera ascendente) los siguientes campos quedarían así:

9 de Julio
25 de Mayo
Arrecifes
Bahía Blanca
Córdoba

Fuente: http://www.lenguajesql.com.ar/lenguajesql/default.asp?id=10