Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
要进行模式升级,使用 SQL 语句 ALTER DATABASE SCHEMA FROM FILE。
在模式升级过程中不要重置设备。如果在模式升级过程中重置了设备,则数据将会丢失且 UltraLite 数据库标记为 "bad"。
比较新数据库模式和现有数据库模式的不同之处。
现有数据库的模式会发生变更。
删除不适合新模式的行。例如:
如果将唯一性约束添加到表并有多行拥有相同的值,则将删除除一行之外的所有行。
如果您尝试更改列域并出现转换错误时,则将删除那一行。例如,如果您有一列 VARCHAR 列并将其转换为 INT 列,而某一行的值是 ABCD,则删除该行。
如果新模式拥有新的外键,其中外行没有匹配的主键,则删除这些行。
删除行时会出现 SQLE_ROW_DROPPED_DURING_SCHEMA_UPGRADE (130) 警告。
创建一个定义新模式的 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 语句。
用双连字符 (-) 作为注释的前缀,并只出现在行首。
针对哪个数据库将执行升级,备份该数据库。
运行新语句。例如:
ALTER DATABASE SCHEMA FROM FILE 'MySchema.sql';
因为在升级过程中激活了 UltraLite 错误回调,所以在转换过程中通知您有错误。例如,SQLE_CONVERSION_ERROR 报告不能以其参数进行转换的所有值。错误不 表示过程失败。在这种情况下,返回语句后的最终 SQL 代码是 130 警告。这些警告描述了转换过程的操作,没有停止升级过程。