gpt4 book ai didi

java - JDBC Apache derby SYSCOLUMNS 表不显示信息

转载 作者:行者123 更新时间:2023-12-01 13:42:19 25 4
gpt4 key购买 nike

我正在调查 Apache Derby 中的系统表(在 SYS Schema 内)。我有一个使用 Apache Derby RDBMS 的数据库,并向其中添加了三个表,分别称为“帐户”、“客户”和“员工”。数据库在 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 没有,我认为上述错误是原因,但我不明白错误是什么以及如何修复它(如果有的话)

最佳答案

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

您运行的是哪个版本的 Derby?

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

如果您可以将复制品打包到一个简单的测试用例中,那么如果您可以在 Derby JIRA 上记录一个包含所有详细信息的新作业,那就太好了。

同时,您可以研究这些作业建议的一些解决方法:

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

关于java - JDBC Apache derby SYSCOLUMNS 表不显示信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20631209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com