0

wso2 mgr をインストールし、jdbi を少し変更して mysql サーバーを使用すると、oauth 以外のすべてが機能するように見えます。

Carbon Web UI で、左側のメニューの「oauth」をクリックすると、エラー メッセージが表示されます。

System Error Occurred - Error occurred while reading OAuth application data

私は他の投稿を見て、これを見ました${WSO2_IS_HOME}/repository/conf/identity.xmlエントリがあるのを見 た場所を見ました<skipdbschemacreation>true</skipdbschemacreation>

私はそれを false に変更しようとしましたが、変更はありません...

wso2 apu mgr でこの問題が発生した人はいますか?

api mgr で oauth を設定する方法はありますか?

wso2 ID マネージャーをインストールする必要がありますか?

----更新1 ------

このフラグを false に変更すると、エラー メッセージが表示されるため、データベースに問題が発生しているようです。このフラグを true にリセットすると、db エラーがまだ残っています ...

エラーメッセージは言う

[2012-08-19 15:40:13,649] エラー - JDBCResourceDAO は ID 688 のリソースを削除できませんでした。ステートメントを実行できません: BINLOG_FORMAT = STATEMENT であり、少なくとも 1 つのテーブルが行に制限されたストレージ エンジンを使用しているため、バイナリ ログに書き込むことができませんベースのロギング。トランザクション分離レベルが READ COMMITTED または READ UNCOMMITTED の場合、InnoDB は行ログに制限されます。java.sql.SQLException: ステートメントを実行できません: BINLOG_FORMAT = STATEMENT であるため、バイナリ ログに書き込むことができず、少なくとも 1 つのテーブルが行ベースのログ記録に限定されたストレージ エンジンを使用しています。トランザクション分離レベルが READ COMMITTED または READ UNCOMMITTED の場合、InnoDB は行ログに制限されます。

その後、wso2起動スクリプトは次のように述べています:

[2012-08-19 15:40:13,654] FATAL - CarbonServerManager WSO2 Carbon の初期化に失敗しました org.wso2.carbon.registry.core.exceptions.RegistryException: ID 688 のリソースを削除できませんでした。 BINLOG_FORMAT = STATEMENT であるため、バイナリ ログであり、少なくとも 1 つのテーブルが行ベースのログ記録に限定されたストレージ エンジンを使用しています。トランザクション分離レベルが READ COMMITTED または READ UNCOMMITTED の場合、InnoDB は行ログに制限されます。

少し後、同じ起動スクリプトで

org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) 原因: java.sql.SQLException: ステートメントを実行できません: BINLOG_FORMAT = STATEMENT および少なくとも 1 つのテーブルであるため、バイナリ ログに書き込むことができません行ベースのロギングに限定されたストレージ エンジンを使用します。トランザクション分離レベルが READ COMMITTED または READ UNCOMMITTED の場合、InnoDB は行ログに制限されます。

4

1 に答える 1

1

skipdbschemacreationプロパティは、WSO2 APIManager の導入後に具体的に導入されました。これは、必要なすべてのテーブル (OAuth2.0 関連テーブルを含む) を作成するための個別の SQL スクリプトが WSO2 APIManager にあるためです。そのため、サーバーの起動時に OAuth コンポーネントのスキーマ作成ステップをスキップする必要がありました。したがって、WSO2 APIManager ではこのプロパティがデフォルトで「true」に設定され、 WSO2 Identity Server ではfalseに設定されているのは正しいことです。

直面している問題は、MySQL データベースを指す構成が正しくないためです。MySQL データベースを使用している場合、その設定を構成する場所は{WSO2_APIMANAGER_HOME}/repository/conf/datasources/master-datasources.xmlです。WSO2AM_DB という名前のデータソースの設定を変更します。これは、OAuth2.0 関連のテーブルを持つデータソースです。

例えば

        <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 データベース スキーマを作成するには:

  1. WSO2AM_DB を作成するための mysql スクリプトがある場所に移動します。

  2. その場所からコマンド プロンプトを開き、cmd プロンプトから mysql にログインします。

    mysql -u ルート -p

  3. データベースを作成します。ユーザーを作成し、アクセスを許可します。

    データベース APIMGT を作成します。

  4. GRANT ALL ON apimgt.* TO admin@localhost IDENTIFIED BY "admin";

  5. mysql.sql スクリプトを実行します。これにより、データベースが構成されます。

    APIMGT を使用します。

    ソース mysql.sql;

于 2012-08-20T11:52:45.083 に答える