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

SQL Anywhere 11.0.1 (中文) » UltraLite - 数据库管理和参考 » 使用 UltraLite 数据库 » 将 UltraLite 部署到设备

 

部署 UltraLite 模式升级

要进行模式升级,使用 SQL 语句 ALTER DATABASE SCHEMA FROM FILE。

升级过程
小心

在模式升级过程中不要重置设备。如果在模式升级过程中重置了设备,则数据将会丢失且 UltraLite 数据库标记为 "bad"。

  1. 比较新数据库模式和现有数据库模式的不同之处。

  2. 现有数据库的模式会发生变更。

  3. 删除不适合新模式的行。例如:

    • 如果将唯一性约束添加到表并有多行拥有相同的值,则将删除除一行之外的所有行。

    • 如果您尝试更改列域并出现转换错误时,则将删除那一行。例如,如果您有一列 VARCHAR 列并将其转换为 INT 列,而某一行的值是 ABCD,则删除该行。

    • 如果新模式拥有新的外键,其中外行没有匹配的主键,则删除这些行。

  4. 删除行时会出现 SQLE_ROW_DROPPED_DURING_SCHEMA_UPGRADE (130) 警告。

♦  升级 UltraLite 模式
  1. 创建一个定义新模式的 DDL 语句的 SQL 脚本。SQL 脚本文件的字符集必须匹配您想升级的数据库的字符集。

    应使用 ulinit 或 ulunload 以抽取您的脚本所需的 DDL 语句。通过使用这些带以下选项的实用程序,确保 DDL 语句在语法上是正确的。

    • 如果您正在使用 ulunload,则使用 -n 和 -s [ file ] 选项。

    • 如果您正在使用 ulinit,则使用 -l [ file ] 选项。

    如果您未使用 ulunload 和 ulinit,则查看脚本以确保:

    • 未重命名表、列或发布。不支持 RENAME 操作。如果重命名表,则作为 DROP TABLE 和 CREATE TABLE 操作处理。

    • 未包含非 DDL 语句。包含非 DDL 语句可能不具有您预期的效果。

    • SQL 语句中的字以空格分隔。

    • 一行只能显示一条 SQL 语句。

    • 用双连字符 () 作为注释的前缀,并只出现在行首。

  2. 针对哪个数据库将执行升级,备份该数据库。

  3. 运行新语句。例如:

    ALTER DATABASE SCHEMA FROM FILE 'MySchema.sql';
错误通知

因为在升级过程中激活了 Ultralite 错误回调,所以在转换过程中通知您有错误。例如,SQLE_CONVERSION_ERROR 报告不能以其参数进行转换的所有值。错误表示过程失败。在这种情况下,返回语句后的最终 SQL 代码是 130 警告。这些警告描述了转换过程的操作,没有停止升级过程。

另请参见