使用 NodeJS 访问 Firebird 数据库时出现未知 table 错误

Unknown table error accessing Firebird database with NodeJS

我需要编写脚本将数据从 Firebird 2.5 迁移到 mySQL。我正在尝试:

const Firebird = require('node-firebird')
const options = {
  host: '127.0.0.1',
  port: 3050,
  database: 'database.gdb',
  user: 'SYSDBA',
  password: 'masterkey',
  lowercase_keys: false,
  role: null,
  pageSize: 4096
}
Firebird.attach(options, function(err,db){
  if(err) throw err
  db.execute("SELECT * from CLIENTE", function(err,result){
    if(err) throw err
  })
})

但我一直收到错误消息:

Error: Dynamic SQL Error, SQL error code = -204, Table unknown, CLIENTE, At line 1, column 10

现在,类似的问题已经被问过两次了...

此处:

这里:firebird isql: "there is no table XXXX in this database"

...但在那些情况下,问题是 table 通过声明 "between quotes" 区分大小写。我的不是,因为 DDL 的第一行(用 Flamerobin 提取)将显示...

CREATE TABLE CLIENTE
(
  CLIENTE_ID integer NOT NULL,
  CODIGO varchar(10),
  TIPO_CLIENTE varchar(1),
  NOME varchar(40),
...

我可以毫无问题地使用 IBExpert、Flamerobin 和 isql 访问数据库(但不能使用 firebird python 驱动程序)。在这一点上,我不知道还能做什么,非常感谢您的帮助。

我猜您正在连接到与您想象的不同的数据库。确保您真正连接到与在 FlameRobin 中相同的数据库。我注意到您指定了 - 看起来像 - 数据库的相对路径。相对路径是相对于某些 config/installation 特定位置解析的,例如,当通过 Firebird 服务器连接时相对于其安装文件夹(IIRC,未验证),当使用 Firebird Embedded 连接时,相对于应用程序当前工作目录,等等

你真的应该使用绝对路径,或者更好的别名(Firebird 2.5 及更低版本在 aliases.conf 中定义,Firebird 3 及更高版本在 databases.conf 中定义)。