使用NodeJS访问Firebird数据库的未知表错误

时间:2019-02-21 14:25:52

标签: node.js database firebird

我需要编写一个脚本来将数据从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

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

此处:init(decoding:as:)

此处:transcode(_:from:to:stoppingOnError:into:)

...但是在那些情况下,问题在于该表通过声明为“引号之间”而变得区分大小写。我的不是,因为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驱动程序无法做到)。在这一点上,我不知道该怎么办,非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

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

您应该真正使用绝对路径,或者更好地使用别名(对于Firebird 2.5和更低版本,请在aliass.conf中定义;对于Firebird 3和更高版本,请在databases.conf中定义)。