以下 SQL 代码在 MYSQL 上运行良好,并且包含有效的 SQL 查询语言。但是,这在嵌入式 Firebird 服务器上不起作用。
SQL 代码:
CREATE TABLE publications (
id int(11) NOT NULL,
filename varchar(500) NOT NULL,
title varchar(500) DEFAULT NULL,
authors varchar(1000) DEFAULT NULL,
uploader int(7) DEFAULT NULL,
keywords varchar(500) DEFAULT NULL,
rawtext text,
rawbinarydata blob NOT NULL,
lastmodified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
ALTER TABLE publications
ADD PRIMARY KEY (id),
ADD UNIQUE KEY filename (filename);
ALTER TABLE publications
MODIFY id int(11) NOT NULL AUTO_INCREMENT;
使用查询的 C# 代码是:
try
{
using( cmd.Connection = connect_to_fbserver() )
{
cmd.CommandText = fresh_db_creation_statement;
cmd.Connection.Open();
cmd.ExecuteNonQuery();
}
return true;
}
catch( Exception exx )
{
lasterror = exx.Message;
return false;
}
fresh_db_creation_statement
是第一个代码清单中的 sql 代码。
错误被捕获lasterror = exx.Message;
的值为: "Dynamic SQL Error\nSQL error code = -104\nToken unknown - line 2, char 13"
,这意味着(
被嵌入式 firebird 标记(即line 2, char 13
)。
当我删除所有大小的已定义数据值类型(例如更改id int(11) NOT NULL
为id int NOT NULL
)时,它将标记NOT
.
如何让 Firebird 接受此查询并正常执行?