Categorías
Base de datos

No hay forma de conectarse remotamente al puerto 3306 de mysql en plesk

Tienes que editar el fichero de configuración de mysql con tu editor favorito.

vi /etc/my.cnf

Añade estas 2 lineas

[mysqld]
skip-external-locking
bind-address = 0.0.0.0
Categorías
Base de datos

Cómo elegir la base de datos entre MyISAM o InnoDB

El motor de almacenamiento se encarga de almacenar, manejar y recuperar información de una tabla. Los motores más conocidos son MyISAM e InnoDB. La elección de uno u otro dependerá mucho del escenario donde se aplique.

En la elección se pretende conseguir la mejor relación de calidad acorde con nuestra aplicación. Si necesitamos transacciones, claves foráneas y bloqueos, tendremos que escoger InnoDB.

Por el contrario, escogeremos MyISAM en aquellos casos en los que predominen las consultas SELECT a la base de datos.

InnoDB dota a MySQL de un motor de almacenamiento transaccional (conforme a ACID) con capacidades de commit (confirmación), rollback (cancelación) y recuperación de fallos.

InnoDB realiza bloqueos a nivel de fila y también proporciona funciones de lectura consistente sin bloqueo al estilo Oracle en sentencias SELECT.

Estas características incrementan el rendimiento y la capacidad de gestionar múltiples usuarios simultáneos.

No se necesita un bloqueo escalado en InnoDB porque los bloqueos a nivel de fila ocupan muy poco espacio.

InnoDB también soporta restricciones FOREIGN KEY. En consultas SQL, aún dentro de la misma consulta, pueden incluirse libremente tablas del tipo InnoDB con tablas de otros tipos

InnoDB

InnoDB es una tecnología de almacenamiento de datos de fuente abierta para MySQL, incluido como formato de tabla estándar en todas las distribuciones de MySQL AB a partir de las versiones 4.0.

Su característica principal es que soporta transacciones de tipo ACID y bloqueo de registros e integridad referencial. InnoDB ofrece una fiabilidad y consistencia muy superior a MyISAM, la anterior tecnología de tablas de MySQL, si bien el mejor rendimiento de uno u otro formato dependerá de la aplicación específica.

  • Soporte de transacciones
  • Bloqueo de registros
  • Nos permite tener las características ACID (Atomicity, Consistency, Isolation and Durability: Atomicidad, Consistencia, Aislamiento y Durabilidad en español), garantizando la integridad de nuestras tablas.
  • Es probable que si nuestra aplicación hace un uso elevado de INSERT y UPDATE notemos un aumento de rendimiento con respecto a MyISAM.

MyISAM

MyISAM es la tecnología de almacenamiento de datos usada por defecto por el sistema administrador de bases de datos relacionales MySQL.

Este tipo de tablas están basadas en el formato ISAM pero con nuevas extensiones. En las últimas versiones de Mysql, el motor InnoDB está empezando a reemplazar a este tipo de tablas por su capacidad de ejecutar transacciones de tipo ACID y bloqueo de registros e integridad referencial.

  • Mayor velocidad en general a la hora de recuperar datos.
  • Recomendable para aplicaciones en las que dominan las sentencias SELECT ante los INSERT / UPDATE.
  • Ausencia de características de atomicidad ya que no tiene que hacer comprobaciones de la integridad referencial, ni bloquear las tablas para realizar las operaciones, esto nos lleva como los anteriores puntos a una mayor velocidad
Categorías
Base de datos

Como resetear a 1 un campo incremental

Los campos incrementales lo que hacen es asignar un entero diferente a cada nuevo registro, añadiendo 1 al anterior valor asignado, empezando por el 1. Por lo tanto, si borramos toda la información de la tabla y generamos un nuevo registro podremos comprobar como no obtiene un 1 sino el valor que hubiera correspondido antes de borrar los registros.

Si necesitamos borrar la tabla y resetear este número para reiniciar la numeración en 1 la opción más sencilla es ejecutar la siguiente sentencia SQL.

TRUNCATE nombre_tabla;

Esta instrucción vacía la tabla y resetea el autoincremental a su valor inicial.

Si lo que queremos es hacer que el valor autoincremental tome un valor determinado es posible utilizar la siguiente sentencia, que modifica la tabla cambiando el valor de autoincremento a 1000 o cualquier valor. NOTA: Hay que tener en cuenta que este número debe ser mayor que cualquier id de la tabla.

ALTER TABLE nombre_tabla AUTO_INCREMENT=1000

Categorías
Base de datos

Reemplazar un texto en MySQL

A menudo es necesario reemplazar de cadenas de texto almacenada en base de datos de forma masiva.

Por ejemplo si necesitas cambiar los enlaces que apunten a una web por url distinta.

Para hacer este cambio lo más sencillo es realizar una consulta SQL que sustituirla la cadena dominioviejo.com por dominionuevo.com en todos los contenidos.

Esto es tan sencillo como realizar la siguiente query:

UPDATE base de datos SET post_content = REPLACE (post_content,'http://dominioviejo.com','http://dominionuevo.com')
Categorías
Base de datos

Cómo insertar automáticamente la fecha y hora en mysql

Para insertar automáticamente la fecha y la hora, es decir, el timestamp, en un campo de tipo TIMESTAMP en una tabla en MySQL podemos utilizar CURRENT_TIMESTAMP, siempre que estemos utilizando una versión de servidor Mysql superior a la 4.1.

Si se utiliza el timestamp automático en las inserciones, cuando se omita el campo en una inserción, éste tomara el valor de fecha y hora que tenga el servidor en ese momento.

Para esto se debe usar la propiedad DEFAULT CURRENT_TIMESTAMP en la creación del campo. Si se utiliza en las actualizaciones, cuando se produzca una sentencia UPDATE que omita el campo que tiene la propiedad en el timestamp, el campo tomará el valor actual de fecha y hora del servidor.

Para esto se debe usar la propiedad ON UPDATE CURRENT_TIMESTAMP en la creación del campo. Se pueden usar por separado, o combinadas:

Tabla con un campo timestamp que toma un valor de fecha automático tanto en inserciones como actualizaciones

mysql> CREATE TABLE tabla_ejemplo1 (fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);

Tabla con un campo timestamp que toma un valor de fecha automático tanto en inserciones pero NO en actualizaciones

mysql> CREATE TABLE tabla_ejemplo2 (fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP);

Tabla con un campo timestamp que toma un valor de fecha automático en actualizaciones pero NO en inserciones

mysql> CREATE TABLE tabla_ejemplo3 (fecha TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
Categorías
Base de datos

Vaciar todos los registros de una tabla en mysql

Si queremos eliminar todos los registros de una tabla en MySql tenemos dos opciones, la primera es tan solo utilizar nuestra sentencia “DELETE” de siempre solo que sin ningún “WHERE”, haciendo que se borren todos los datos de la tabla:

DELETE FROM tabla

Pero también podemos optar por la alternativa que es mediante la declaración “TRUNCATE TABLE” de la siguiente forma

TRUNCATE TABLE tabla

Para empezar la opción con DELETE devuelve el número de registros que fueron borrados, mientras que TRUNCATE TABLE no devuelve nada.

Por otro lado TRUNCATE lo que hace en realidad es destruir la tabla y volverla a crear y no eliminar cada uno de los registros y puesto que eliminar y crear la tabla es mucho más rápido que eliminar todos los registros.

Otra diferencia importante tiene que ver con la misma característica de TRUNCATE TABLE de destruir y volver a crear la tabla, y es que reinicia todos los valores AUTO_INCREMENT de la tabla, es decir que si ibamos en el registro 1340, y usamos TRUNCATE TABLE al insertar un nuevo registro este volvería a ser el 1, mientras que en caso de usar DELETE FROM el AUTO_INCREMENT se conservaría intacto por lo que nuestro nuevo registro sería el número 1341 a pesar de ser el primero.

Categorías
Base de datos

Reparar tablas InnoDB o MyISAM

Para reparar tables InnoDB en mysql necesitaremos ejecutar en nuestro cliente de MySQL las siguientes sentencias para repararlas:
CHECK TABLE nombre_tabla EXTENDED
Distintas opciones que podemos aplicar a CHECK TABLE:

  • QUICK
    No escanea los registros para chequear enlaces incorrectos.
  • FAST
    Sólo chequea tablas que no se han cerrado correctamente.
  • CHANGED
    Sólo las tablas chequeadas que se han cambiado desde el úlitmo chequeo o no se han cerrado correctamente.
  • MEDIUM
    Escanea registros para verificar que los enlaces borrados están bien. También calcula el checksum de la clave para los registros y lo verifica con el checksum calculado para las claves.
  • EXTENDED
    Realiza una búsqueda completa para todas las claves para cada registro. Se asegura que la tabla es consistente 100%, pero tarda mucho tiempo!

La cual nos devolvera el status actual de nuestra tabla.

Si nos da Error ejecutaremos:
REPAIR TABLE nombre_tabla