27 agosto, 2018

Conectando a MySQL 8.0

Anteriormente, en versiones como MySQL 5.7 establecíamos la conexión de la siguiente manera. 

Para los que van a utilizar la versión 8 de MySQL Server, tenemos que hacer una modificación a la conexión, pues el código que usábamos es deprecado. 

Connecting to MySQL 8.0

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
Fri Aug 17 13:21:33 COT 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
java.sql.SQLException: The server time zone value 'Hora est. Pacífico, Sudaméric' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

Para solucionar el problema realizamos una pequeña modificación al código:

Class.forName("com.mysql.cj.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/baseDeDatos?useTimezone=true&serverTimezone=UTC", "user", "pass");

Nota: 

1. Deben tener agregado el jar de conexión MYSQL "mysql-connector-java-8.0.x" a su proyecto.
2. Deben agregar la zona horaria de la base de datos, déjenlo en UTC por defecto o si desean especificar su ciudad, les dejo estas lista con los nombres: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

No hay comentarios, ¡cuéntame algo!

Me gustaría saber tu opinión. ¡Saludos!