3
create table WEBLOG
(
ORDERNO CHAR(9) NOT NULL,
USERNAME CHAR(50) NOT NULL,
ACTION CHAR(255) NOT NULL,
NOTE MEMO,
UPDATEDATE DATE NOT NULL,
UPDATETIME TIME NOT NULL,
IP CHAR(15),
PK CHAR(36) NOT NULL,
PRIMARY KEY(PK)
)

上面的查询不起作用,错误消息说,

ERROR IN SCRIPT: poQuery: Error 7200:  AQE Error:  State = HY000;   NativeError = 2215;  [iAnywhere Solutions][Advantage SQL Engine]Invalid create options:  
NOCPTRANS and nullable column type options are only valid with ADS_VFP table type. -- Location of error in the SQL statement is: 23 (line: 3 column: 1)

该查询有什么问题?

我的优势数据库版本是 9.1。

有人知道,请给我建议。

谢谢!

4

1 回答 1

4

此错误是由使用 引起的NOT NULL,它仅在 ADS_VFP (Visual FoxPro) 表类型上受支持。

使用 Advantage处理的通常方法NOT NULL是通过 ADS 数据字典建立连接,然后改用CONSTRAINT NOT NULL语法。但是,它不适用于free table(不在数据字典中的表)连接 - 尝试仅将其更改为CONSTRAINT NOT NULL在空闲表上会导致错误The field-level or record-level constraint is invalid. Field level constraints are not supported on free table.

这记录在ADS 9.1 帮助中,特别是在CREATE TABLE下:

vfp 选项 ::= NULL | 非空 | NOCPTRANS

这些选项适用于 Visual FoxPro 表 (ADS_VFP),并可与自由表和数据字典表一起使用。NULL(和 NOT NULL)选项指示列是否能够在物理上保存 NULL 值。这与 NOT NULL 约束不同。如果创建 Visual FoxPro 列时没有使用 NULL 选项,则如果尝试在该列中存储 NULL,则会产生错误。NOCPTRANS 选项适用于 Visual FoxPro 字符和备注字段类型。如果提供此选项,则不会跨代码页转换数据(ANSI/OEM 转换)。

顺便说一句,当您在 中遇到语法错误ARC32,并且您的 SQL 的结构与您的一样时,光标位于导致错误的行上。在这种情况下,错误是在第一个列定义 ( ORDERNO CHAR(9) NOT NULL) 上引起的。更改该单列定义以删除NOT NULL使错误发生在下一行。

于 2012-08-06T21:32:38.787 回答