我遇到的问题是我想在两个不同的数据库之间同步一个表。数据库 1 位于装有 MySQL 的 XP 服务器上 数据库 2 位于装有 Clarion 的 Novell 服务器上。
是否可以在两个数据库之间共享一个表用户?因此,当数据放入数据库 1 时,数据库会自动与数据库 2 同步。完成后,表:用户在两个数据库中是否相同?
提前致谢!
迪德里克,
您的问题不是很清楚,因为我们不知道您是否可以访问源代码或只能在数据库级别上操作。
如果您使用 Clarion 来驱动这些数据库,您没有明确提及。我假设你是,因为你用它标记了你的帖子。
此外,您没有提及您在 Novell 服务器上使用的文件格式。我假设您使用的是 TopSpeed 文件格式 - 这里有一些关于 TopSpeed 文件格式的信息:大多数程序员认为它是 Clarion for Windows 的“本机”文件格式。它不是。Clarion for Windows 没有原生文件格式,而是采用完全驱动程序驱动的方法。Clarion Professional Developer(一个 DOS IDE)具有原生文件格式,即 Clarion .DAT 格式。Clarion for Windows 可以使用任何提供驱动程序或 ODBC 驱动程序的文件格式,包括旧的 .DAT。
如果您可以访问源代码,那么这是一个非常直接的情况。在 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,对它一无所知。
解决此问题的一种解决方案是在 MySQL 服务器上使用 TopSpeed ODBC 驱动程序,并让 MySQL SP 访问 ODBC 驱动程序。我认为 TopSpeed ODBC 驱动程序是必须的,因为它允许一种策略来避免这种情况,并促进更好的集成。
关于 MySQL SP 的详细信息超出了本文的范围,也是因为我不知道那个级别的 MySQL SP。
问候