我不确定我的derby数据库发生了什么,但我似乎有能从ij界面看到的表......
ij> show tables in derbytest;
TABLE_SCHEM |TABLE_NAME |REMARKS
------------------------------------------------------------------------
DERBYTEST |DATATYPETEST |
DERBYTEST |LOCATION |
DERBYTEST |SUIVI |
现在我得到表格说明......
ij> describe derbytest.datatypetest;
COLUMN_NAME |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL&
------------------------------------------------------------------------------
A_DATE |DATE |0 |10 |10 |NULL |NULL |NO
AN_INT |INTEGER |0 |10 |10 |NULL |NULL |YES
A_DECIMAL |DECIMAL |0 |10 |5 |NULL |NULL |YES
A_STRING |VARCHAR |NULL|NULL|20 |NULL |40 |YES
A_SWITCH |BOOLEAN |NULL|NULL|1 |NULL |NULL |YES
所以我猜这个表存在,但是......
ij> select * from derbytest.datatypetest;
ERREUR XSAI2 : Le conglomÚrat (1á232) demandÚ n'existe pas.
快速检查问题是否是由'空'表引起的。
ij> select * from derbytest.suivi;
OBS |DATE |TIME
-----------------------------------------------------------------------
对我来说建议不要!
我不确定我是否完全理解错误消息的含义,我在文档中找到了这个
表36.类XSAI:Store - access.protocol.interface SQLSTATE 消息文本XSAI2请求的集团()没有 存在。
这不是很有帮助! 我已经看过引擎,语言,测试和工具的各种API文档,但我不知道从哪里开始看,任何指针都会有所帮助。
这可能与我如何设置数据库有关,所以有一些快速背景。
我从java测试类连接到此测试数据库。它从另一个数据源(平面文件的XL)收集信息,然后将其放入此数据库(或者这是目标)。我只是展示一个小的“测试”,以确保我的连接正常工作。
我在这个文件中有另一个具有更多表的模式,它们都有同样的问题。
我没有正确关闭连接并丢失数据吗? 我是否无意中无意中选择了一个包含缺失的“集团”的数据文件
非常感谢任何帮助。
大卫。
ps我还有其他测试数据库,我没有检查过它们是否有同样的问题。 我在XP上运行java 6.
edit1:刚刚检查了我正在使用的其他testDB,它不包含任何表格!我自己明显地清理干净了。那只猫去哪儿了?
答案 0 :(得分:0)
这是奇怪的行为,当然。我不确定是什么问题。
您是否在事务中创建了表但尚未提交该事务?
您是否使用内存数据库创建了表,在这种情况下,当您关闭数据库时它会消失?
您是否在磁盘上的一个位置创建了数据库,然后使用“create = true”连接到其他位置,在这种情况下,Derby会在新位置创建一个新的空白数据库?
您是使用一个架构创建数据库,然后使用其他架构连接吗?
错误消息确实表明对表有一些内部损坏。括号中的数字(1a232)是一个聚合数字,也用于识别文件系统中的聚合物文件名。因此,您可以查看文件系统并将数据库中的文件与数据库中的表进行匹配(通过从sys.sysconglomerates中选择)。
您可以获得表格本身的集团,以及每个二级索引的附加集团,包括由CREATE INDEX创建的集合和由UNIQUE或REFERENCES等隐式约束创建的集合。
如果您怀疑有桌面损坏,最好从备份恢复。您是否遇到任何可能表示表损坏的系统崩溃,磁盘已满事件等?