This is an automated email from the ASF dual-hosted git repository.

mpapirkovskyy pushed a commit to branch branch-2.7
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/branch-2.7 by this push:
     new ed80f7a  AMBARI-25198. MYSQL connector exception while upgrading 
ambari to ambari-2.7.3. (mpapirkovskyy) (#2877)
ed80f7a is described below

commit ed80f7add8a4cc02192671647d7cda2c8f938797
Author: Myroslav Papirkovskyi <[email protected]>
AuthorDate: Wed Mar 20 17:51:16 2019 +0200

    AMBARI-25198. MYSQL connector exception while upgrading ambari to 
ambari-2.7.3. (mpapirkovskyy) (#2877)
---
 .../apache/ambari/server/orm/DBAccessorImpl.java    | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java 
b/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java
index 34f44f6..b52c3b8 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java
@@ -39,6 +39,7 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Properties;
 import java.util.Set;
 
 import org.apache.ambari.server.configuration.Configuration;
@@ -76,6 +77,11 @@ import com.google.inject.Singleton;
 @Singleton
 public class DBAccessorImpl implements DBAccessor {
   private static final Logger LOG = 
LoggerFactory.getLogger(DBAccessorImpl.class);
+  public static final String USER = "user";
+  public static final String PASSWORD = "password";
+  public static final String NULL_CATALOG_MEANS_CURRENT = 
"nullCatalogMeansCurrent";
+  public static final String TRUE = "true";
+  public static final int SUPPORT_CONNECTOR_VERSION = 5;
   private final DatabasePlatform databasePlatform;
   private final Connection connection;
   private final DbmsHelper dbmsHelper;
@@ -92,9 +98,7 @@ public class DBAccessorImpl implements DBAccessor {
     try {
       Class.forName(configuration.getDatabaseDriver());
 
-      connection = DriverManager.getConnection(configuration.getDatabaseUrl(),
-              configuration.getDatabaseUser(),
-              configuration.getDatabasePassword());
+      connection = getNewConnection();
 
       connection.setAutoCommit(true); //enable autocommit
 
@@ -153,9 +157,14 @@ public class DBAccessorImpl implements DBAccessor {
   @Override
   public Connection getNewConnection() {
     try {
-      return DriverManager.getConnection(configuration.getDatabaseUrl(),
-              configuration.getDatabaseUser(),
-              configuration.getDatabasePassword());
+      Properties properties = new Properties();
+      properties.setProperty(USER, configuration.getDatabaseUser());
+      properties.setProperty(PASSWORD, configuration.getDatabasePassword());
+      if (configuration.getDatabaseUrl().contains("mysql")
+          && 
DriverManager.getDriver(configuration.getDatabaseUrl()).getMajorVersion() > 
SUPPORT_CONNECTOR_VERSION) {
+        properties.setProperty(NULL_CATALOG_MEANS_CURRENT, TRUE);// jdbc mysql 
connector 8.x turn on legacy behaviour
+      }
+      return 
DriverManager.getConnection(configuration.getDatabaseUrl(),properties);
     } catch (SQLException e) {
       throw new RuntimeException("Unable to connect to database", e);
     }

Reply via email to