gpt4 book ai didi

sql - Firebird isql : "there is no table XXXX in this database"

转载 作者:行者123 更新时间:2023-12-04 21:56:02 24 4
gpt4 key购买 nike

我正在尝试从 Firebird 2.5 SQL 数据库中提取数据以进行迁移。数据是通过嵌入 Firebird 2.5 数据库的软件在很长一段时间内建立起来的——软件公司在允许以易于迁移的形式访问我们的数据方面没有帮助......

通过更改 security2.fdb 文件,我可以通过 isql 访问数据库使用管理员用户名 SYSDBA并且可以列出数据库中的表,但是对单个表的任何进一步访问总是会抛出消息:“此数据库中没有表 XXXX”

以下是 Windows 命令提示符的示例:

SQL> show tables;
....
....
Customer
....
SQL> show table customer;
There is no table CUSTOMER in this database

我怀疑对单个表的访问受到控制,但如果可能的话,我无法弄清楚如何重新获得访问权限。

最佳答案

默认情况下,Firebird(和大多数其他数据库)中的对象名称不区分大小写,但有一个问题:如果您创建或引用不带引号的表(或其他对象)名称,它实际上被视为大写。仅当对象名称用引号引起来时,它才区分大小写并按原样引用。此行为在 SQL 标准中指定(参见 SQL:2011 Foundation,5.2 以及 5.4 Names and Identifiers)。

这意味着 customer , Customer , CUSTOMER , CuStOmEr"CUSTOMER"所有引用同一个表,即: CUSTOMER .

创建表时 "Customer" (注意引号),它作为 Customer 存储在元数据中但它只能被引用为 "Customer" , 使用 Customer仍会引用 CUSTOMER因为不带引号的对象名称不区分大小写。

您尝试使用显示表格

show table Customer;

请注意错误消息中 CUSTOMER 的大写用法:

There is no table CUSTOMER in this database


show tables的输出显示您有一张 table Customer (而不是 CUSTOMER ),因此您需要将其引用为 "Customer" .您需要使用:
show table "Customer";

关于sql - Firebird isql : "there is no table XXXX in this database",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26193347/

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