【发布时间】:2010-10-01 14:02:39
【问题描述】:
我正在研究将一些单元测试(对于在 DB2 上运行的应用程序)更改为使用 Derby 的可行性。在找到this question 的答案声称DB2 和Derby 非常兼容之后,似乎有可能将DDL 从DB2 数据库中取出并在Derby 数据库上运行。但我似乎发现了一个 Derby 不能与 Derby DDL 一起工作的案例。
所以我为 DB2 9.1 编写了如下所示的 DDL:
CREATE TABLE FOO (
FOO_ID CHAR(17) NOT NULL,
FOO_SOMESTUFF CHAR(17) NOT NULL WITH DEFAULT ,
FOO_MORESTUFF CHAR(1) NOT NULL WITH DEFAULT ,
FOO_DT DATE NOT NULL WITH DEFAULT
);
在 ij 中运行这个 DDL 不起作用,我得到这个语法错误:
ij> run 'c:/derby/db-derby-10.6.1.0-bin/foo.sql';
ij> CREATE TABLE FOO (
FOO_ID CHAR(17) NOT NULL,
FOO_SOMESTUFF CHAR(17) NOT NULL WITH DEFAULT ,
FOO_MORESTUFF CHAR(1) NOT NULL WITH DEFAULT ,
FOO_DT DATE NOT NULL WITH DEFAULT
);
ERROR 42X01: Syntax error: Encountered "," at line 3, column 62.
Issue the 'help' command for general information on IJ command syntax.
Any unrecognized commands are treated as potential SQL commands and executed dir
ectly.
Consult your DBMS server reference documentation for details of the SQL syntax s
upported by your server.
产生与 DB2 DDL 相同的默认值的 Derby 的 DDL 是什么?
我知道我可能需要更改 DDL,它充满了像 AUDIT NONE 和 DATA CAPTURE 和 CCSID EBCDIC 这样的奇怪东西,我必须摆脱这些东西才能让 Derby 正常工作。但是,对于这个代码库来说,将内容默认为全空白是一件大事,如果有一个不同的内存数据库在这方面会比 Derby 做得更好,我愿意接受建议。
【问题讨论】: