mysql - hybris 到 mysql 数据库的连接问题

标签 mysql database tomcat sap-commerce-cloud

我试图设置 hybris,但当我尝试从 CLI 初始化时,由于 Mysql 连接问题,构建失败。 但是,我能够使用 mysql 客户端从 hybris 节点连接到 mysql 数据库。

谁能帮我解决这个问题?是否需要一些额外的权限?

下面是执行“ant initialize”最后抛出的错误:

 [java] ERROR [main] [DataSourceImpl] error connecting to DataSource having url jdbc:mysql://<mysql-ip>:3306/hybrisdatabase?useConfigs=maxPerformance&characterEncoding=utf8&useSSL=false: Unknown error 1045

完整错误日志

server:
     [echo] 
     [echo] Configuring server at /ABC/hybris/bin/platform/tomcat
     [echo] Using config set at /ABC/hybris/config/tomcat
     [echo]             
     [echo] copying from /ABC/hybris/config/tomcat to /ABC/hybris/bin/platform/tomcat
     [copy] Copying 9 files to /ABC/hybris/bin/platform/tomcat
     [copy] Copying 3 files to /ABC/hybris/bin/platform/tomcat
     [copy] Copying 2 files to /ABC/hybris/bin/platform/tomcat
     [copy] Copying 1 file to /ABC/hybris/bin/platform/tomcat/lib
     [echo] 
     [echo] Embedded server does not seem to be running (no PID found). No restart necessary.
     [echo]                         

initialize:
    [input] skipping input as property tenant has already been set.
     [java] ---------------------------------------------------------------
     [java] Warning: you're using at least one deprecated extension!
     [java] Please note that they may not be available in future releases.
     [java] 
     [java] Deprecated extensions: [liveeditaddon, sapcoreodata]
     [java] ---------------------------------------------------------------
     [java] ---------------------------------------------------------------
     [java] Warning: you're using at least one deprecated extension!
     [java] Please note that they may not be available in future releases.
     [java] 
     [java] Deprecated extensions: [liveeditaddon, sapcoreodata]
     [java] ---------------------------------------------------------------
     [java] Exception in thread "main" java.lang.reflect.InvocationTargetException
     [java]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [java]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
     [java]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     [java]     at java.lang.reflect.Method.invoke(Method.java:498)
     [java]     at de.hybris.bootstrap.loader.Loader.execute(Loader.java:142)
     [java]     at de.hybris.bootstrap.loader.Loader.main(Loader.java:118)
     [java] Caused by: java.lang.RuntimeException: java.sql.SQLException: Unknown error 1045
     [java]     at de.hybris.platform.jdbcwrapper.DataSourceImpl.adjustDatabaseInfos(DataSourceImpl.java:647)
     [java]     at de.hybris.platform.jdbcwrapper.DataSourceImpl.<init>(DataSourceImpl.java:213)
     [java]     at de.hybris.platform.jdbcwrapper.DataSourceImpl.<init>(DataSourceImpl.java:149)
     [java]     at de.hybris.platform.core.DataSourceImplFactory.createDataSource(DataSourceImplFactory.java:51)
     [java]     at de.hybris.platform.core.AbstractTenant$HybrisDataSourceBuilder.createMasterDataSource(AbstractTenant.java:2869)
     [java]     at de.hybris.platform.core.AbstractTenant$HybrisDataSourceBuilder.buildMasterDataSourceOnce(AbstractTenant.java:2631)
     [java]     at de.hybris.platform.core.AbstractTenant$HybrisDataSourceBuilder.build(AbstractTenant.java:2577)
     [java]     at de.hybris.platform.core.AbstractTenant.doInitializeSafe(AbstractTenant.java:329)
     [java]     at de.hybris.platform.core.AbstractTenant.doInitialize(AbstractTenant.java:308)
     [java]     at de.hybris.platform.core.AbstractTenant.doStartUp(AbstractTenant.java:674)
     [java]     at de.hybris.platform.core.Registry.assureTenantStarted(Registry.java:648)
     [java]     at de.hybris.platform.core.Registry.activateTenant(Registry.java:709)
     [java]     at de.hybris.platform.core.Registry.setCurrentTenant(Registry.java:556)
     [java]     at de.hybris.platform.core.Registry.activateMasterTenantForInit(Registry.java:625)
     [java]     at de.hybris.platform.util.ClientExecuter.execute(ClientExecuter.java:39)
     [java]     ... 6 more
     [java] Caused by: java.sql.SQLException: Unknown error 1045
     [java]     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)
     [java]     at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3970)
     [java]     at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3906)
     [java]     at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:873)
     [java]     at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1710)
     [java]     at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1226)
     [java]     at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2253)
     [java]     at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2284)
     [java]     at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2083)
     [java]     at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:806)
     [java]     at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
     [java]     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     [java]     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
     [java]     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
     [java]     at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
     [java]     at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
     [java]     at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:410)
     [java]     at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:328)
     [java]     at de.hybris.platform.jdbcwrapper.JDBCConnectionFactory.createRawSQLConnection(JDBCConnectionFactory.java:189)
     [java]     at de.hybris.platform.jdbcwrapper.JDBCConnectionFactory.createSQLConnection(JDBCConnectionFactory.java:220)
     [java]     at de.hybris.platform.jdbcwrapper.JDBCConnectionFactory.makeObject(JDBCConnectionFactory.java:109)
     [java]     at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:868)
     [java]     at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:435)
     [java]     at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363)
     [java]     at de.hybris.platform.jdbcwrapper.JDBCConnectionPool.borrowConnection(JDBCConnectionPool.java:113)
     [java]     at de.hybris.platform.jdbcwrapper.ConnectionErrorCheckingJDBCConnectionPool.borrowConnection(ConnectionErrorCheckingJDBCConnectionPool.java:97)
     [java]     at de.hybris.platform.jdbcwrapper.DataSourceImpl.adjustDatabaseInfos(DataSourceImpl.java:629)
     [java]     ... 20 more
     [java] ERROR [main] [DataSourceImpl] error connecting to DataSource having url jdbc:mysql://10.43.4.168:3306/hemdevhybris?useConfigs=maxPerformance&characterEncoding=utf8&useSSL=false: Unknown error 1045
     [java] shutting down hybris registry..

BUILD FAILED
/TK/hybris/bin/platform/build.xml:123: The following error occurred while executing this line:
/ABC/hybris/bin/platform/resources/ant/antmacros.xml:1021: The following error occurred while executing this line:
/ABC/hybris/bin/platform/resources/ant/platformadministration.xml:51: The following error occurred while executing this line:
/ABC/hybris/bin/platform/resources/ant/antmacros.xml:878: Java returned: 1

Hybris local.properties:

db.url=jdbc:mysql://<mysql-IP>:3306/hybrisdatabase?useConfigs=maxPerformance&characterEncoding=utf8&useSSL=false
db.driver=com.mysql.jdbc.Driver
db.username=hybris-user
db.password=*****
db.tableprefix=
mysql.optional.tabledefs=CHARSET=utf8 COLLATE=utf8_bin
mysql.tabletype=InnoDB

来自 hybris 节点的 Mysql 连接:

[hybris@****platform]$ mysql -h <mysql-ip> -u hybris-user -p'password'
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 2188
Server version: 5.7.20 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hybrisdatabase       |
+--------------------+
2 rows in set (0.01 sec)


MySQL [(none)]>  SHOW GRANTS FOR 'hybris-user'@'%';
+------------------------------------------------------------------+
| Grants for hybris-user@%                                      |
+------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'hybris-user'@'%'                       |
| GRANT ALL PRIVILEGES ON `hybrisdatabase`.* TO 'hybris-user'@'%' |
+------------------------------------------------------------------+
2 rows in set (0.00 sec)

MySQL [(none)]> use hybrisdatabase;
Database changed
MySQL [hybrisdatabase]> show tables;
Empty set (0.01 sec)

最佳答案

在创建 Mysql 密码时,请避免使用特殊字符,并在 Hybris local.properties 文件中正确提供相同的密码。 用于 Hybris 初始化的“ant”命令不能很好地处理带有特殊字符(例如“-、+、#、:”)的 MySql 密码。

关于mysql - hybris 到 mysql 数据库的连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47713705/

相关文章:

mysql - 在sql中如何编写在where子句中提供两个值的子查询

java - 如何在不同的 web 应用程序中使用 EventBus 共享事件?

sql - 向 postgresql 查询插入 JSON 数据成功,但输出意外

mysql - 通过wamp远程连接mysql

java - 如何调查 Tomcat 中 AJP 线程数的急剧增长?

java - 来自 application.properties 的 Spring Boot 配置

php - 循环sql查询时

php - 在 php foreach 循环中编写 MySql Where 子句

mysql - 如何将电话号码调整为相同格式?

sql-server - 自动化 DBCC CHECKDB