Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » MobiLink - 服务器管理 » 使用 MobiLink 服务器技术 » MobiLink 统一数据库

 

MySQL 统一数据库

MobiLink 服务器支持 MySQL Community 和 Enterprise 服务器 5.1.22 或更高版本。QAnywhere 和 MobiLink 模型不支持 MySQL。

将 MySQL 设置为统一数据库

要设置 MySQL 用作 MobiLink 统一数据库,必须运行设置过程,此过程将添加 MobiLink 同步所需的 MobiLink 系统表、存储过程、触发器和视图。可通过两种方法实现这一点:

  • 使用 MySQL 命令行工具或 MySQL Query Browser,运行 syncmys.sql 安装脚本,它位于 install-dir\MobiLink\setup 中。确保您的 MySQL 用户 ID 拥有创建触发器的权限。

  • 在 Sybase Central 的 MobiLink 插件中,选择 [模式] » [管理] 并连接到服务器数据库。右击数据库名,选择 [检查 MobiLink 系统设置]。如果需要对您的数据库进行设置,系统将提示您继续。请注意,如果想使用一个现有的 MobiLink 系统设置,则 default_schema 应该为 MobiLink 系统设置的模式。

注意

运行安装脚本的数据库用户是具有更改 MobiLink 系统表权限的唯一用户,这是配置 MobiLink 应用程序所必需的。请参见所需权限

MobiLink 服务器用于连接统一数据库的 RDBMS 用户必须能够使用 MobiLink 系统表、过程等,但不能使用任何限定符(例如,SELECT * from ml_user)。请参见MobiLink 服务器系统表

ODBC 驱动程序

必须使用 MySQL web 站点所提供的 ODBC 驱动程序为 MySQL 统一数据库设置 ODBC DSN。MobiLink 服务器支持 MySQL ODBC 驱动程序 5.1.3 或更高版本。请参见:

要指定 Unix 中的 ODBC 配置文件,执行以下操作之一:

如果某些同步脚本包含用分号分隔的批处理 SQL 命令,那么,当您配置 MobiLink 服务器的 DSN 以连接 MySQL 数据库时,可能需要选中在 [MySQL Connector/ODBC Data Source Configuration] 窗口的 [Flags 3] 页面上的 [Allow Multiple Statements] 复选框。

MySQL 问题
  • 存储引擎   MobiLink 服务器要求缺省存储引擎遵从 ACID。如果缺省存储引擎不遵从 ACID,则应确保使用遵从 ACID 的存储引擎(如 InnoDB 和 Falcon)来创建所有 MobiLink 服务器表。

  • 存储过程   在存储过程调用中不能使用 INOUT 或 OUT 参数。需要这些参数的过程必须作为返回 OUT 值的函数实现。

    需要 INOUT 参数的服务器事件,如 authenticate_user 和 modify_user,必须作为函数实现并且使用 SELECT 语句运行,而不是 CALL 语句。

    因为用户定义的命名参数在服务器事件运行之后不会修改,因此不受支持。

  • 游标脚本   事件 upload_fetch、download_cursor 和 download_delete_cursor 必须使用 SELECT 语句来调用,而这些事件由 MobiLink 服务器以读取已提交的隔离级别来运行。MySQL ODBC 驱动程序中的错误会使服务器读取未提交操作,如 INSERT、UPDATE 和 DELETE 语句,这样就会导致统一数据库和远程数据库之间的数据不一致。

    为解决此问题,将 LOCK IN SHARE MODE 子句附加到 SELECT 语句。例如,

    SELECT column1 FROM table1 WHERE id > 0 LOCK IN SHARE MODE

    该子句会防止 SELECT 语句执行未提交操作。

  • 批量上载   MobiLink 服务器依赖于 MySQL ODBC 驱动程序,而该程序当前不支持批量上载。

  • MLSD   MobiLink 服务器依赖于 MySQL ODBC 驱动程序,而该程序当前不支持 MSDTC。

  • 用于 Unix 的 64 位 MobiLink 服务器上的 SQLLEN 数据类型   MySQL ODBC 驱动程序将 SQLLEN 定义为一个 32 位整数,导致与将 SQLLEN 定义为一个 64 位整数的 64 位 MobiLink 服务器存在差异。如果在 64 位 Unix 环境下运行 MobiLink,则必须将以下内容添加到 ODBC 配置文件,
    length32=1

    该条目强制服务器将 SQLLEN 读取为 32 位整数。您的配置应与以下示例类似:

    [a_mysql_dsn]
    Driver=full_path/libmyodbc5.so
    server=host_name
    uid=user_name
    pwd=user_password
    database=database_name
    length32=1

  • MySQL 服务器配置   MobiLink 同步脚本作为文本存储在 ml_script 表中,需要时可对其进行检索。可能需要在 my.ini 文件中将 max_allowed_packet 设置为 16m 或更大。

隔离级别

请参见MobiLink 隔离级别