1

私が抱えている問題は、2つの異なるデータベース間で1つのテーブルを同期させたいということです。データベース1はMySQLを搭載したXPサーバー上にありますデータベース2はClarionを搭載したNovellサーバー上にあります。

2つのデータベース間で1つのテーブルユーザーを共有することは可能ですか?したがって、データがデータベース1に配置されると、データベースはデータベース2と自動的に同期します。これが行われると、テーブル:ユーザーは両方のデータベースに同じになりますか?

前もって感謝します!

4

1 に答える 1

2

ディーデリク、

あなたの質問は、あなたがソース コードにアクセスできるのか、それともデータベース レベルでしか操作できないのかがわからないという点で明確ではありません。

これらのデータベースを駆動するために Clarion を使用しているかどうかについては、明確に言及していませんでした。投稿にタグを付けたので、あなたがそうだと思います。

また、Novell サーバーで使用しているファイル形式についても言及していませんでした。TopSpeed ファイル フォーマットを使用していると仮定しています。ここでは、TopSpeed ファイル フォーマットについて少し説明します。ほとんどのプログラマは、これが Clarion for Windows の「ネイティブ」ファイル フォーマットであると考えています。そうではない。Clarion for Windows にはネイティブ ファイル形式はありませんが、完全にドライバー駆動型のアプローチを採用しています。Clarion Professional Developer (DOS IDE) には、Clarion .DAT 形式のネイティブ ファイル形式がありました。Clarion for Windows は、古い .DAT を含め、ドライバーまたは ODBC ドライバーを提供する任意のファイル形式を使用できます。

ソース コードにアクセスできる場合は、かなりストレートな状況です。Clarion では、さまざまなテーブルを指すさまざまなバッファを簡単に作成できます。

                PROGRAM

            MAP
            END

szConnMySQL     CSTRING( 256 )

users_mysql     FILE, DRIVER( 'ODBC' ), OWNER( szConnMySQL ), NAME( 'users' )        
RECORD            RERCORD                                                            
id                  LONG                                                             
name                STRING( 20 )                                                     
                  END
                END

users_tps       FILE, DRIVER( 'TopSpeed' ), NAME( 'users' )        
RECORD            RECORD                                           
name                STRING( 20 )                                   
id                  LONG                                           
                  END                                                
                END


            CODE

            szConnMySQL = 'Driver={{MySQL ODBC 3.51 Driver};' & |
              'Server=myServerAddress;Database=myDataBase;User=myUsername;' & |
              'Password=myPassword;Option=3;'

            OPEN( users_mysql, 42h )
            OPEN( users_tps, 42h )

            users_mysql.id = 1
            users_mysql.name = 'GUSTAVO PINSARD'
            ADD( users_mysql )
            IF NOT ERRORCODE()
              users_tps.RECORD :=: users_mysql.RECORD
              ADD( users_tps )

            ELSE
              ! Do your thing
            END

            CLOSE( users_mysql )
            CLOSE( users_tps )                

ソース コードにアクセスできない場合は、MySQL ストアド プロシージャを記述してリモート ファイルを更新する必要があります。問題は、TopSpeed ファイルであるリモート ファイルが、MySQL サーバーから直接アクセスできることです。これは、MySQL がそれについて何も知らないためです。

これを解決する 1 つの解決策は、MySQL サーバーで TopSpeed ODBC ドライバーを使用し、MySQL SP に ODBC ドライバーにアクセスさせることです。このような状況を回避し、より良い統合を促進するための戦略を可能にするため、TopSpeed ODBC ドライバーは必須であると考えています。

MySQL SP の詳細については、この投稿の範囲外です。これは、そのレベルの MySQL SP についても知らないためです。

よろしく

于 2011-01-28T12:35:11.270 に答える