Mostrando entradas con la etiqueta mariadb. Mostrar todas las entradas
Mostrando entradas con la etiqueta mariadb. Mostrar todas las entradas

martes, 16 de marzo de 2021

Instalar MariaDB en mageia 8

 Despues de tener instalado mageia 7 y para hacer la transición mageia 8 debía de comenzar instalando mariadb la instalé pero me dio el siguiente error:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'

eso fue cuanto traté de entrar en el gestor de mariadb lo que pasa es que el servicio no esta cargado lo cargamos de la siguiente manera, abrimos la terminal y escribimos:

systemctl enable mysqld

eso lo hacemos como administrador

bueno pues es error de que no se puede conectar en este caso a mariadb ya que no puede acceder a mariadb remotamente, así que lo que hay que hacer es habilitar la conexión remota, en el archivo de configuración, ya en los archivos del sistema Linux.

/etc/my.cnf

Nos convertimos en root y con el editor que prefiramos lo cargamos:

 1. comentamos la linea

#skip-networking

2. luego la linea de bind-address debemos descomentarla y nos debe quedar como sigue:

bind-address = 0.0.0.0

esto hará que escuche de todos lados en ipv4

debemos reiniciar el servicio por lo que en la linea de comandos escribimos.

systemctl restart mysqld  

Bueno al salir a mi usuario resulta que no funcionó sino que solo funciona para cuando estoy como administrador en el sistema así que ahora cuando trato de entrar como root en mariaDB (que antes en mageia 7 no me daba) me da el error.

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

así que lo que hice fue crear un usuario con los privilegios de root en mariaDB de la siguiente forma.

Entro en la consola de mariadb como administrador como ya sabemos hacerlo

mysql -u root -p

cargamos la base de datos donde estan los usuarios

USE mysql

creamos el nuevo usuario

CREATE USER 'usuario'@'localhost' IDENTIFIED BY 'contraseña';

ejemplo:


CREATE USER 'pedro'@'localhost' IDENTIFIED BY 'manzana';

Por supuesto que en usuario ponemos el nombre que queremos ponerle y en contraseña la que le queramos asignar a ese usuario.

 Luego le damos los privilegios en este caso todos los privilegios

GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'localhost';

 ejemplo:

GRANT ALL PRIVILEGES ON *.* TO 'pedro'@'localhost';

recargamos los permisos que se dieron con

flush privileges;

si quisiéramos ver los usuarios lo hacemos con el siguiente comando

Select user from mysql.user;

salimos con el comando

exit

 



viernes, 11 de diciembre de 2020

Hibernate error 1452

 Trabajando con Hibernate una tabla padre y una hija, en la tabla padre ingresaba correctamente pero el error surgió cuando quise ingresar en la tabla hija me dio el siguiente error:

Hibernate:
    insert
    into
        pedidos
        (fkclientescodcliente, fechaEntrega, fechaPedido, notas, valor)
    values
        (?, ?, ?, ?, ?)
dic 10, 2020 3:25:34 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 1452, SQLState: 23000
dic 10, 2020 3:25:34 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: Cannot add or update a child row: a foreign key constraint fails (`studio`.`pedidos`, CONSTRAINT `fk_clientecodcliente` FOREIGN KEY (`fkclientescodcliente`) REFERENCES `clientes` (`codcliente`) ON DELETE NO ACTION ON UPDATE CASCADE)
Exception in thread "AWT-EventQueue-0" javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: could not execute statement

pase mucho tiempo tratando de encontrar la causa del error, es causado porque la tabla padre y la tabla hija tienen motor (ENGINE) diferente.

si vemos el motor de la tabla padre que en este caso es clientes en la consola de mariadb o mysql podríamos el siguiente comando (comando en negrilla y por supuesto cargando la base de datos con use <tabla> antes):


MariaDB [studio]> show create table clientes;

 

Nos dará el siguiente resultado:

| clientes | CREATE TABLE `clientes` (
  `codcliente` int(11) NOT NULL AUTO_INCREMENT,
  `nombre` varchar(20) DEFAULT NULL,
  `apellido` varchar(20) DEFAULT NULL,
  `telefono` varchar(15) DEFAULT NULL,
  `direccion` varchar(50) DEFAULT NULL,
  `nit` varchar(15) DEFAULT NULL,
  `cuenta` decimal(12,2) DEFAULT NULL,
  PRIMARY KEY (`codcliente`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 |

si vemos la última linea ENGINE=MyISAM tiene el motor MyISAM, ahora hacemos lo mismo con la tabla hija comando en negrilla:

 

MariaDB [studio]> show create table pedidos;

 

| pedidos | CREATE TABLE `pedidos` (
  `codPedido` int(11) NOT NULL AUTO_INCREMENT,
  `fechaPedido` date DEFAULT NULL,
  `fechaEntrega` date DEFAULT NULL,
  `valor` decimal(12,2) DEFAULT NULL,
  `fkclientescodcliente` int(11) DEFAULT NULL,
  `notas` varchar(250) DEFAULT NULL,
  PRIMARY KEY (`codPedido`),
  KEY `fk_clientecodcliente_idx` (`fkclientescodcliente`),
  CONSTRAINT `fk_clientecodcliente` FOREIGN KEY (`fkclientescodcliente`) REFERENCES `clientes` (`codcliente`) ON DELETE NO ACTION ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=latin1 |

vemos nuevamente la última linea ENGINE=InnoDB tiene el motor InnoDB son diferentes así que deben ser iguales como InnoDB es mas moderno lo cambie en la tabla padre de la siguiente forma:

 

MariaDB [studio]> alter table clientes engine= innoDB;

 

Ahora al darle que nos muestre la creación de la tabla para ver el motor de la tabla padre (clientes) vemos que se a cambiado:

| clientes | CREATE TABLE `clientes` (
  `codcliente` int(11) NOT NULL AUTO_INCREMENT,
  `nombre` varchar(20) DEFAULT NULL,
  `apellido` varchar(20) DEFAULT NULL,
  `telefono` varchar(15) DEFAULT NULL,
  `direccion` varchar(50) DEFAULT NULL,
  `nit` varchar(15) DEFAULT NULL,
  `cuenta` decimal(12,2) DEFAULT NULL,
  PRIMARY KEY (`codcliente`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 |

y ahora se habra arreglado el error 1452, me costo mucho encontrar el error solo Gracias a Dios que lo pude arreglar asi que si a alguien le ayuda esto enhorabuena.
 

viernes, 25 de octubre de 2019

NetBeans Error de conexion con mariadb

Cuando reinstalé el sistema Gnu/Linux Mageia 7 resulta que ya tenía unos programas en java y NetBeans me dió el siguiente error "Error de conexion Could not connect to address=(host=localhost)(port=3306)(type=master) : Socket fail to connect to host:localhost, port:3306. Conexión rehusada (Connection refused)
BUILD SUCCESSFUL (total time: 5 seconds)"


error de conexion a base de datos mariadb netbeans




bueno pues es error de que no se puede conectar en este caso a mariadb ya que no puede acceder a mariadb remotamente, así que lo que hay que hacer es habilitar la conexión remota, en el archivo de configuración, ya en los archivos del sistema Linux.

/etc/my.cnf

Nos convertimos en root y con el editor que prefiramos lo cargamos:

 1. comentamos la linea

#skip-networking

2. luego la linea de bind-address nos debe quedar como sigue:

bind-address = 0.0.0.0

esto hará que escuche de todos lados en ipv4

debemos reiniciar el servicio por lo que en la linea de comandos escribimos.

systemctl restart mysqld








viernes, 1 de marzo de 2019

Caracteres extraños en importacion csv a MariaDB

Tenía una hoja electrónica en excel así que necesitaba importarlo en MariaDB yo pues estaba en Linux, lo primero era pasarlo a un archivo csv (separado por comas) así que la importé pero al ver el resultado estaba con caracteres extraños, no habían tildes ni letra ñ en este caso lo que hay que cambiar es la forma en que está guardado, yo lo tenía en formato "UTF-8".
Lo abrí en LibreOffice Calc ya allí le doy "Guardar como.."

libreoffice Calc guardar como


Abajo elegimos la opción "Texto CSV (csv)"
     
Guardar un archivo en calc como csv

Seleccionamos "Usar formato Texto CSV"

usar formato csv en libreoffice calc

Ahora si lo importante debemos escoger la opción "Europa occidental (ISO-8859-15/EURO)"

exportar a un archivo de texto calc diferentes formatos

Después de escoger el formato debemos especificar el delimitador en mi caso solo le puse la coma "," y el delimitador de la cadena lo puse en blanco.

delimitador de campo en libreoffice calc delimitador campo y cadena

Le damos "Aceptar" para que nos genere el archivo CSV en formato (ISO-8859-15/EURO) y ya lo podremos importar a MariaDB con los caracteres que tiene la hoja electrónica con el comando LOAD DATA LOCAL INFILE Cómo lo sabemos o como está aquí.

viernes, 1 de febrero de 2019

Cargar archivo CSV en MariaDB con Fecha

Para que sepan mi entorno de trabajo les diré que estoy trabajando en Mageia Linux 6 con MariaDB todo en local y necesitaba cargar un archivo CSV (separado por comas) pero se me presentaba el problema que el formato de la fecha estaba como 'dd/mm/yy' todo está hecho en la consola de MariaDB así que lo hice con el siguiente comando:

LOAD DATA LOCAL INFILE '/home/usuario/productos.csv'
    -> INTO TABLE productos
    -> FIELDS TERMINATED BY ','
    -> (codigoarticulo,
    -> seccion,
    -> nombrearticulo,
    -> precio,
    -> @fecha,
    -> importado,
    -> paisdeorigen)
    -> SET fecha=STR_TO_DATE(@fecha,'%d/%m/%Y');

Asi logré leer el archivo separado por comas en la misma computadora ya que todo estaba en local.

LOAD DATA INFILE: lee ficheros externos de MariaDB a una tabla a alta velocidad.

LOCAL: porque el archivo esta en mi directorio personal.

INTO TABLE: a que tabla del motor de base de datos queremos introducir los datos.

FIELDS TERMINATED BY ',': cual es el separador de cada campo en el archivo csv.

LINES TERMINATED BY '': Lo omití porque por defecto es el retorno de línea.

(codigoarticulo,
    -> seccion,
    -> nombrearticulo,
    -> precio,
    -> @fecha,
    -> importado,
    -> paisdeorigen): esta sección son los campos de la tabla, fecha esta con una arroba @ adelante para que sea una variable string temporal que luego se pueda convertir el string a un formato de fecha reconocido por MariaDB.

SET fecha=STR_TO_DATE(@fecha,'%d/%m/%Y'); : con la siguiente instrucción se convierte el formato de fecha 'dd/mm/yy' al formato 'yyyy/mm/dd' le introducimos a el campo fecha de la tabla la información que devuelve la función STR_TO_DATE donde le indicamos la variable temporal y el formato que trae.

También menciono que el archivo CSV no tenia encabezados de columnas así que no era necesario eliminar la 1ra línea ya que todos eran datos, si necesitaramos eliminar la 1ra línea de encabezado se usaría la cláusula

IGNORE 1 LINES

Que en este caso se colocaría después de FIELDS TERMINATED BY ','.

martes, 8 de enero de 2019

Netbeans, driver jdbc y MariaDB

Esto lo escribo debido a que al principio tenía duda como era las cosas con el driver JDBC en netbeans y conectar la base de datos MariaDB, en Netbeans 8.2 el driver jdbc ya viene en el sistema no hay que descargarlo y funciona con el gestor de base de datos MariaDB la diferencia es que cuando escribimos:

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/nuestabase","root","")

podemos ponerle "mysql" con MariaDB y no hay problema pero no podemos poner "mariadb", si en caso descargamos el driver de MariaDB de aqui ese driver si admite que se le ponga "mariadb" dentro de la sentencia.

Connection con = DriverManager.getConnection("jdbc:mariadb://localhost:3306/nuestabase","root","")

Supuestamente en el caso del driver de mariadb es intercambiable poniendo "mysql" o "mariadb" y funciona yo lo trabajé en linux Mageia 6 pero no creo que halla diferencia en otros sistemas.

sábado, 1 de diciembre de 2018

MariaDB, Mageia Linux y Java

El otro día necesitaba conectar el motor de base de datos MariaDB en Mageia 6 con java pero no lo lograba.
Así que queriendo revisar el puerto a que se conectaba pensando que era eso resulta que al hacer la instrucción dentro de la consola de MariaDB:

SHOW variables  WHERE variable_name = 'port';

me salió que el puerto con el que se conectaba MariaDB era 0 (cero).


mariadb puerto show variable where variable_name = 'port'


Así que lo que hay que hacer es habilitar la conexión remota, en el archivo de configuración ya en los archivos del sistema Linux.

/etc/my.cnf

Nos convertimos en root y con el editor que prefiramos lo cargamos:

 1. comentamos la linea

#skip-networking

2. luego la linea de bind-address nos debe quedar como sigue:

bind-address = 0.0.0.0

esto hará que escuche de todos lados en ipv4

debemos reiniciar el servicio por lo que en la linea de comandos escribimos.

systemctl restart mysqld.service

ahora al probar el puerto a que se conecta, otra vez dentro de la consola de MariaDB  ya nos saldrá el puerto 3306

mariadb ver puerto con show variables where variable_name='port'

sábado, 25 de abril de 2015

instalar MariaDB en OpenSuse

Debemos

Instalar mariadb
en opensuse 13.1 ya trae mariadb pero mariadb-tools no, pero por si no

mariadb
mariadb-tools

asi que lo instalamos puede ser con zypper recordemos que como administrador, tambien puede ser con sudo.


sudo zypper install mariadb mariadb-tools

iniciar el servidor
eso lo hacemos como sigue (vemos que escribimos mysql pero es por razones de compatibilidad)

sudo systemctl start mysql.service

configurar mariadb
ahora

sudo mysqladmin -u root password Clave

ejemplo:

sudo mysqladmin -u root password miclave

Para entrar ya al servidor de la base

mysql -u root -p

nos pedirá la clave la ingresamos damos <enter>  y listo

Para salir


lo que debemos hacer es:

exit

y salimos.