存在的DB表上的Derby xsa12错误....但没有

时间:2012-08-10 13:07:23

标签: derby

我不确定我的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,它不包含任何表格!我自己明显地清理干净了。那只猫去哪儿了?

1 个答案:

答案 0 :(得分:0)

这是奇怪的行为,当然。我不确定是什么问题。

您是否在事务中创建了表但尚未提交该事务?

您是否使用内存数据库创建了表,在这种情况下,当您关闭数据库时它会消失?

您是否在磁盘上的一个位置创建了数据库,然后使用“create = true”连接到其他位置,在这种情况下,Derby会在新位置创建一个新的空白数据库?

您是使用一个架构创建数据库,然后使用其他架构连接吗?

错误消息确实表明对表有一些内部损坏。括号中的数字(1a232)是一个聚合数字,也用于识别文件系统中的聚合物文件名。因此,您可以查看文件系统并将数据库中的文件与数据库中的表进行匹配(通过从sys.sysconglomerates中选择)。

您可以获得表格本身的集团,以及每个二级索引的附加集团,包括由CREATE INDEX创建的集合和由UNIQUE或REFERENCES等隐式约束创建的集合。

如果您怀疑有桌面损坏,最好从备份恢复。您是否遇到任何可能表示表损坏的系统崩溃,磁盘已满事件等?