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);
}