【问题标题】:JDBC Apache derby SYSCOLUMNS Table Not Displaying InformationJDBC Apache derby SYSCOLUMNS 表不显示信息
【发布时间】:2014-01-05 00:59:34
【问题描述】:

我正在调查 Apache Derby 中的系统表(在 SYS 模式中)。我有一个使用 Apache Derby RDBMS 的数据库,并向其中添加了三个表,分别称为 Accounts、Customers 和Employees。数据库在 Java 应用程序后面运行,该应用程序对这三个表运行查询以执行任何一个 CRUD 功能(这些查询工作正常,因此没有问题)

我想要做的是使用 SQL(不是 Java 的类,我知道的)通过数据库中的系统表(表名、列名、表中的数据等)获取有关我创建的表的元数据about) 而不是简单地查询实际的表本身。我查看了Derby system tables 上对表格的引用 页,我认为我应该关注的表是 SYSCOLUMNS 和 SYSTABLES。奇怪的是 SYSTABLES 显示了有关我的表的信息,但 SYSCOLUMNS 没有。

SYS 模式中还有其他表包含有关我的表的数据,例如 SYSCONTSTRAINTS、SYSFOREIGNKEYS、SYSKEYS 和(如上所述)SYSTABLES。所以对我来说,SYSCOLUMNS 里面没有关于我的表的信息有点奇怪。

当我实际对 SYSCOLUMNS 运行查询时,我收到了这个错误:

Error code 20000, SQL state XN020: Error marshalling or unmarshalling a user defined type: org.apache.derby.catalog.types.TypeDescriptorImpl

我认为这是指 COLUMNDATATYPE 列(基于阅读上面链接中 SYSCOLUMNS 表的参考),但我查看了其他页面并不太了解。

如果有帮助,这里是我的表的列和数据类型:

客户

CUSTOMER_ID(整数主键自动递增(从 1 开始,递增 1))

FULL_NAME (Varchar (50))

帐户

ACCOUNT_ID(整数主键自动递增(从 1 开始,递增 1))

CUSTOMER _ID(整数外键(在 CUSTOMER 中引用 CUSTOMER_ID)

ACCOUNT_TYPE (Varchar (50))

平衡(双)

CREDIT_LIMIT(双倍)

员工

EMPLOYEE_ID(整数主键自动递增(从 1 开始,递增 1))

FULL_NAME (Varchar (50))

用户名(Varchar (50))

密码(Varchar (50))

抱歉,由于信誉规则,我无法发布任何屏幕截图(我已登录我的 Google 帐户)。它的要点是:SYSTABLES 有关于我的表的数据,而 SYSCOLUMNS 没有,我认为上述错误是原因,但我不明白错误是什么以及如何修复它(如果有的话)

【问题讨论】:

    标签: java database jdbc derby


    【解决方案1】:

    您使用的是嵌入式驱动还是客户端-服务器驱动?

    您正在运行什么版本的 Derby?

    我将推测,并猜测您正在使用客户端-服务器驱动程序,并且您遇到了 DERBY-5407DERBY-4688DERBY-4491 的某种组合。

    如果您可以将您的复制品打包成一个简单的测试用例,那么如果您可以在 Derby JIRA 记录一份新工作并提供所有详细信息,那就太好了。

    与此同时,您可以调查这些工作建议的一些解决方法:

    1. 使用嵌入式 Derby 驱动程序,而不是客户端-服务器驱动程序
    2. 除了 derbyclient.jar 之外,将 derby.jar 和 derbytools.jar 放入您的 CLASSPATH 中

    【讨论】:

    • 我正在使用客户端-服务器驱动程序和 Derby 版本 10.8.1.2
    • 我尝试添加 derby.jar 和 derbytools.jar 但仍然出现错误。由于找不到合适的驱动程序,在切换到嵌入式驱动程序时遇到问题。
    • 您只需要在添加 jars 并刷新连接时包含 derbytools.jar 和 derby.jar(在我的情况下通过重新连接到数据库服务器)
    猜你喜欢
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    相关资源
    最近更新 更多