You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

isql-fb可连接Firebird 3.0,但PHP/Python执行查询报错求助

解决Firebird 3.0中PHP PDO/Python fdb执行SHOW TABLES报错SQLCODE=-104的问题

核心问题在于:SHOW TABLES是Firebird命令行工具isql-fb的专属交互命令,不属于标准SQL语法。PDO、fdb这类标准SQL驱动只会执行符合SQL规范的语句,因此执行该命令会触发语法错误(SQLCODE=-104)。

替代方案:查询Firebird系统表获取表列表

Firebird通过系统表存储所有数据库元数据,你可以用标准SQL查询这些表来获取表信息:

1. 查询用户自定义表(排除系统表)

SELECT rdb$relation_name AS table_name
FROM rdb$relations
WHERE rdb$relation_type = 0 
  AND rdb$system_flag = 0
ORDER BY rdb$relation_name;
  • rdb$relation_type = 0:筛选普通表(视图对应值为1)
  • rdb$system_flag = 0:排除Firebird自带的系统表
  • 若需排除视图,可额外添加AND rdb$view_blr IS NULL

2. 查询所有表(包含系统表)

去掉rdb$system_flag = 0条件即可:

SELECT rdb$relation_name AS table_name
FROM rdb$relations
WHERE rdb$relation_type = 0
ORDER BY rdb$relation_name;

不同语言的实现示例

PHP PDO示例

$dsn = 'firebird:dbname=/path/to/your/database.fdb;charset=UTF8';
$user = 'sysdba';
$pass = 'your_password';

try {
    $pdo = new PDO($dsn, $user, $pass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    $stmt = $pdo->query("SELECT rdb$relation_name AS table_name FROM rdb$relations WHERE rdb$relation_type = 0 AND rdb$system_flag = 0 ORDER BY rdb$relation_name");
    $tables = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    foreach ($tables as $table) {
        echo $table['table_name'] . "\n";
    }
} catch (PDOException $e) {
    echo 'Error: ' . $e->getMessage();
}

Python fdb示例

import fdb

conn = fdb.connect(
    dsn='/path/to/your/database.fdb',
    user='sysdba',
    password='your_password',
    charset='UTF8'
)

cursor = conn.cursor()
cursor.execute("""
    SELECT rdb$relation_name AS table_name
    FROM rdb$relations
    WHERE rdb$relation_type = 0 
      AND rdb$system_flag = 0
    ORDER BY rdb$relation_name
""")

tables = cursor.fetchall()
for table in tables:
    print(table[0])

conn.close()

补充说明

Firebird的所有元数据(表结构、用户、权限等)都需要通过系统表/视图查询,类似SHOW DATABASE、SHOW COLUMNS等isql专属命令,都有对应的系统表查询替代方案,比如查询表字段可以用rdb$relation_fields表。

内容的提问来源于stack exchange,提问作者stfn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 00:12:43