如何解决firebird isql:“此数据库中没有表XXXX”
默认情况下,Firebird(和大多数其他数据库)中的对象名称不区分大小写,但有一个局限性:如果创建或引用不带引号的表(或其他对象)名称,则实际上将其视为大写形式。仅当对象名称用引号引起来时,它才区分大小写并按原样引用。此行为在SQL标准中指定(请参见SQL:2011
Foundation, 5.2
这意味着customer
,Customer
,CUSTOMER
,CuStOmEr
和"CUSTOMER"
所有参考同一个表,即:CUSTOMER
。
创建表"Customer"
(注意引号)时,该表以的形式存储在元数据中,Customer
但只能将其引用为"Customer"
,因为未引用的对象名称不区分大小写,Customer
因此仍将使用引用CUSTOMER
。
您尝试使用显示表格
show table Customer;
注意错误消息中CUSTOMER的大写使用:
该数据库中没有表
showtables
shows的输出中有一个表Customer
(而不是CUSTOMER
),因此您需要将其引用为"Customer"
。您需要使用:
show table "Customer";
解决方法
我正在尝试从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
我怀疑对单个表的访问是受控制的,但是,即使有可能,也无法解决如何重新获得访问的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。