MySQL Workbnech: OpenSUSE Couldn’t load library libmysqlclient_r.so

Despues de una actualizacion de OpenSUSE 12.3 a 13.1 me enconter con algun problemillas, como este:

 

Couldn't load library libmysqlclient_r.so: libmysqlclient_r.so: cannot open shared object file: No such file or directory
Screenshot from 2014-01-06 21:16:43Solucion:

primero vemos que version de libmysqlclient en /usr/lib64/ bueno en mi caso, dejo la imagen con la sulucion. dudas deja un comentario

Screenshot from 2014-01-06 22:15:13
Anuncios

PHP:escapar comilla simple

php_thumbCuando trabajamos con MySQL, por ejemplo al hacer update o un insert a una tabla, en ocaciones nos encontramos con este tipo de errore:

SQLSTATE[42000]: Syntax error or access violation: 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 'Brien', 'Finbarr.O'Brien@jaja.com', 5, '')' at line 2

Donde ocupamos escapar las comillas simples ‘Finbarr.O’Brien@jaja.com’

Así rapidamente googleando me encontre con esta función addslashes(Añade barras invertidas a una cadena), la cual me fue muy util, ejemplo:

$sql = "INSERT INTO USER (id, first_name, last_name, email, role,created_by)
VALUES ('$id', '$sFirstName', '".addslashes($sLastName)."', '".addslashes($sEmail)."', $iRole, '$userId')";

Si hacemos un echo a la varable $sql obtendramos algo así:

INSERT INTO USER (sso_id, first_name, last_name, email, role,created_by) VALUES ('1ABRT0', 'Finbarr', 'O\'Brien', 'Finbarr.O\'Brien@jaja.com', 5, '')

Como crear un dump en Mysql

Copia de respaldo

mysql_logoPara hacer una copia de respaldo de una base de datos se recomienda crear un dump.

    • Para hacer un dump de todas las bases de datos es necesario ejecutar el comando:
      mysqldump --user=****** --password=****** -A > /Ruta/Hacia/archivo_dump.SQL
    • Para hacer un dump de sólo algunas bases de datos es necesario ejecutar el comando:
      mysqldump --user=****** --password=******  db_1 db_2 db_n> /Ruta/Hacia/archivo_dump.SQL
    • Para hacer un dump de todas las tablas de una base de datos es necesario ejecutar el comando:
      mysqldump --user=****** --password=****** db > /Ruta/Hacia/archivo_dump.SQL
    • Para hacer un dump de sólo ciertas tablas de una base de datos es necesario ejecutar el comando:
      mysqldump --user=****** --password=****** db --tablas tab1 tab2 > /Ruta/Hacia/archivo_dump.SQL

Para cada uno de estos comando es necesario indicar un usuario (user) y la contraseña (password) con derechos de administrador en la base de datos.

Restauración

    • Para restaurar un dump tan sólo hay que ejecutar el comando:
      mysql --user=****** --password=****** db_nom < /Ruta/Hacia/archivo_dump.SQL

Fechas con MySQL

MySQL
MySQL (Photo credit: Wikipedia)

El manejo de fechas en MySQL es extenso así que solo haré una introducción a las funciones de fechas. Para ejecutar las siguientes querys yo recomiendo usar “MySQL Query Browser”

Obtener la fecha y hora en MySQL

select now();   #   ejemplo:  '2010-01-12 10:50:43'

Obtener hora actual en MySQL

select curTime(); #Selecciona la hora

Obtener día, mes, año, u hora de una fecha en MySQL

select YEAR(NOW());  #Selecciona el año 
select MONTH (NOW()) as mes;  #Selecciona el mes 
select DAY(NOW()) as dia; #Selecciona el día  
select TIME(NOW()) as hora;  #Selecciona la hora 
Select LAST_DAY(NOW()); # Selecciona el ultimo dia del mes

Dar formato a una fecha en MySQL

select Date_format(now(),'%Y/%M/%d'); # '2010/January/12' 
select Date_format(now(),'%Y-%M-%d %h:%i:%s %p'); #'2010-January-12 12:34:29 AM' 
select Date_format(now(),'%W %d %M %Y'); # 'Tuesday 12 January 2010' 
select Date_format(now(),'El año actual es %Y'); # 'El año actual es 2010'

Estos son algunos de los especificadores que tenemos disponibles para dar formato a una fecha, la lista completa pueden verla en los manuales de MySql:

- %d #Día del mes numérico (00...31) 
- %H #Hora (00...23) 
- %h #Hora (01...12) 
- %i #Minutos, numérico (00...59) 
- %M #Nombre mes (January...December) 
- %m #Mes, numérico (00...12) 
- %p #AM o PM 
- %W #Nombre día semana (Sunday...Saturday) 
- %Y #Año, numérico, cuatro dígitos 
- %y #Año, numérico (dos dígitos) 
- %s #Segundos (00...59)

Sumar o restar días a una fecha con DATE_ADD o DATE_SUB en MySQL

DATE_ADD(fecha,INTERVAL valor tipo), DATE_SUB(fecha,INTERVAL valor tipo)

Sumar tiempo en MySQL

select DATE_ADD(NOW(),INTERVAL 20 DAY); # Agrega 20 días a la fecha actual 
select DATE_ADD(NOW(),INTERVAL 30 MINUTE); # Agrega 30 minutos a la fecha actual 
select DATE_ADD(NOW(),INTERVAL 50 YEAR); #Agrega 50 años a la fecha actual 
select DATE_ADD(NOW(),INTERVAL '10-5' YEAR_MONTH); #Agrega 10 años 5 meses a la fecha actual

Restar tiempo en MySQL

select DATE_SUB(NOW(),INTERVAL 8 YEAR); #Resta 8 años a la fecha actual  
select DATE_SUB(NOW(),INTERVAL 24 HOUR); #Resta 24 horas a la fecha actual 
select DATE_SUB(NOW(),INTERVAL '7-2' YEAR_MONTH); #Resta 7 años dos meses a la fecha actual

Estos son algunos de los argumentos que podemos usar, para una lista completa consulten los manuales de MySql

SECOND #Segundos 
MINUTE #Minutos 
HOUR #Horas 
DAY #Días 
MONTH #Meses 
YEAR #Años 
YEAR_MONTH #'Años-meses' 
DAY_HOUR #'Días Horas'

Restar dos fechas

DATEDIFF(fecha_1,fecha_2) devuelve el número de días entre la fecha fecha_1 y la fecha_2SELECT DATEDIFF(NOW(),'2002-11-02'); #cuantos días han pasado 
SELECT DATEDIFF(NOW(),'2010-03-20'); #Cuantos días faltan