【问题标题】:Firebird exception: Table unknown [duplicate]Firebird异常:表未知[重复]
【发布时间】:2023-03-11 13:10:02
【问题描述】:

我可以使用以下连接字符串建立与 Firebird 数据库的连接:

ConnectionString = "User ID=SYSDBA;Password=masterkey;Database=localhost:C:\\MyDb\\mydb.FDB;DataSource=localhost;Charset=NONE;";

但是当 C# 代码尝试执行查询时,会出现以下错误:

动态 SQL 错误 SQL 错误代码 = -204 表未知

我试过的代码:

using FirebirdSql.Data.FirebirdClient;
...
FbConnection connection = new FbConnection(ConnectionString);
connection.Open();
FbCommand readCommand = new FbCommand("Select Name From Customer;", connection);
FbDataReader myreader = readCommand.ExecuteReader();

肯定存在 Customer 表(我已经与 IBExpert 检查过——因为我可以读取数据)。我在 Google 上几乎找不到任何东西。

Firebird 2.5 服务器正在我的计算机上运行。可能是什么问题?

【问题讨论】:

  • 错误不完整; “未知表”错误也会显示未知表的名称。你能也显示表格的DDL吗?我怀疑您创建了一个表"Customer",它区分大小写,因此不同于Customer(不区分大小写,相当于CUSTOMER)。
  • 很遗憾我不知道 DDL。 FDB 文件作为数据库发送给我,没有任何更多信息。我唯一可以使用的是 IBExpert(查看其中有哪些表)。我可以从数据库本身或使用某些工具以某种方式找出 DDL 吗?
  • 当然,IBExpert 可以对 DDL 进行逆向工程(其他工具也可以)。由于我不使用 IBExpert,所以我不知道如何使用。
  • 是的,我刚刚检查过,不幸的是它是“客户”。
  • 要查看来自IBFExpert 的 DDL,请打开表或存储过程或其他内容,然后单击DDL 选项卡。

标签: c# firebird firebird2.5


【解决方案1】:

正如您在 cmets 中确认的表名实际上是 "Customer",您需要在查询中引用对象名称以使其区分大小写,因此:

new FbCommand("Select \"Name\" From \"Customer\"", connection);

我假设Name 也是区分大小写的,因此也引用了它。

【讨论】:

  • 这解决了问题。非常感谢!
猜你喜欢
  • 2015-03-22
  • 2011-01-24
  • 1970-01-01
  • 2014-06-02
  • 1970-01-01
  • 2018-10-15
  • 2019-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多