安装wso2 mgr并在jdbi中稍作更改后使用我们的mysql服务器,除了oauth之外,所有“似乎”都可以工作。
在碳纤维网用户界面中,当我点击“oauth”上的左侧菜单时,我收到一条错误消息
System Error Occurred - Error occurred while reading OAuth application data
我查看了其他帖子和saw this。我看了${WSO2_IS_HOME}/repository/conf/identity.xml
,我看到我有一个条目<skipdbschemacreation>true</skipdbschemacreation>
我尝试将其更改为false并且没有更改......
wso2 apu mgr有没有这个问题?
知道如何在api mgr中设置oauth吗?
我是否必须安装wso2身份管理器?
---- update1 ------
似乎更改为false此标志正在创建我们的数据库的问题,因为我们现在得到一条错误消息。将此标志重置为true时,db错误仍然存在...
错误消息显示
[2012-08-19 15:40:13,649]错误 - JDBCResourceDAO无法删除ID为688的资源。无法执行语句:无法写入二进制日志,因为BINLOG_FORMAT = STATEMENT且至少有一个表使用存储引擎仅限于基于行的日志记录。当事务隔离级别为READ COMMITTED或READ UNCOMMITTED时,InnoDB仅限于行记录。 java.sql.SQLException:无法执行语句:无法写入二进制日志,因为BINLOG_FORMAT = STATEMENT,并且至少有一个表使用限制为基于行的日志记录的存储引擎。当事务隔离级别为READ COMMITTED或READ UNCOMMITTED时,InnoDB仅限于行记录。
后来wso2启动脚本说:
[2012-08-19 15:40:13,654]致命 - CarbonServerManager WSO2碳初始化失败 org.wso2.carbon.registry.core.exceptions.RegistryException:无法删除ID为688的资源。无法执行语句:无法写入二进制日志,因为BINLOG_FORMAT = STATEMENT且至少有一个表使用限制为行的存储引擎 - 基于记录。当事务隔离级别为READ COMMITTED或READ UNCOMMITTED时,InnoDB仅限于行记录。
稍后我们在同一个启动脚本中
org.eclipse.osgi.framework.eventmgr.EventManager $ EventThread.run(EventManager.java:340) 引起:java.sql.SQLException:无法执行语句:无法写入二进制日志,因为BINLOG_FORMAT = STATEMENT且至少有一个表使用限制为基于行的日志记录的存储引擎。当事务隔离级别为READ COMMITTED或READ UNCOMMITTED时,InnoDB仅限于行记录。
答案 0 :(得分:1)
在引入WSO2 APIManager之后,专门引入了 skipdbschemacreation 属性。这是因为WSO2 APIManager有一个单独的sql脚本来创建所有必需的表(包括OAuth2.0相关表)。因此,有必要在服务器启动时跳过OAuth组件的架构创建步骤。因此,默认情况下,此属性在WSO2 APIManager中设置为'true',在WSO2 Identity Server中设置为 false 。
您遇到的问题应该是因为您指向MySQL数据库的配置不正确。如果您使用的是MySQL数据库,那么您应该配置其设置的位置是 {WSO2_APIMANAGER_HOME} /repository/conf/datasources/master-datasources.xml 。更改名称为WSO2AM_DB的数据源的设置。这是具有OAuth2.0相关表的数据源。
E.g。
<datasource>
<name>WSO2AM_DB</name>
<description>The datasource used for API Manager database</description>
<jndiConfig>
<name>jdbc/WSO2AM_DB</name>
</jndiConfig>
<definition type="RDBMS">
<configuration>
<url>jdbc:mysql://localhost:3306/wso2am_db</url>
<username>admin</username>
<password>admin@123</password>
<driverClassName>com.mysql.jdbc.Driver</driverClassName>
<maxActive>50</maxActive>
<maxWait>60000</maxWait>
<testOnBorrow>true</testOnBorrow>
<validationQuery>SELECT 1</validationQuery>
<validationInterval>30000</validationInterval>
</configuration>
</definition>
</datasource>
我假设您已经通过运行 {WSO2_APIMANAGER_HOME} /dbscripts/apimgt/mysql.sql 中提供的mysql.sql脚本创建了所需的数据库架构。
为WSO2 APIManager创建MySQL数据库架构:
导航到您拥有用于创建WSO2AM_DB的mysql脚本的位置。
从该位置打开命令提示符并从cmd提示符登录到mysql
mysql -u root -p
创建数据库。创建用户并授予访问权限。
创建数据库apimgt;
GRANT ALL ON apimgt.* TO admin@localhost IDENTIFIED BY "admin";
运行mysql.sql脚本。这将配置数据库。
使用apimgt;
source mysql.sql;