当使用 Firebird 3 数据库(服务器)但通过 .NET 库 FirebirdSql.Data.FirebirdClient 连接时(我尝试了 V. 7.10.1 和最新的 10.3.2),出现以下错误(在此示例中,我的 drop-constraint 语句有问题):
FirebirdSql.Data.FirebirdClient.FbException:元数据更新
ALTER TABLE mytable 失败,
未找到错误代码 336068738 的消息。
我尝试将firebird.msg
文件复制到system32
和文件夹。我还尝试使用此处所述的wow64
环境变量FIREBIRD_MSG=C:\Program Files\Firebird\Firebird_3_0\firebird.msg
它似乎对我通过错误的 SQL 语句生成的任何错误不起作用。
例如,我收到的另一个错误编号是 336068731。
代码如下:
if (DbProviderFactories.GetFactory("FirebirdSql.Data.FirebirdClient") is not FirebirdClientFactory fac)
{
throw new InvalidOperationException("FirebirdSql.Data.FirebirdClient.dll could not be loaded.");
}
var host = "localhost";
var user = "SYSDBA";
var pass = "masterkey";
var db = $"c:/databases/DelphiIn2025QuestionmarkQuestionmark.fdb";
var bld = new FbConnectionStringBuilder
{
Charset = "NONE",
DataSource = host,
Database = db,
UserID = user,
Password = pass,
WireCrypt = FbWireCrypt.Enabled
};
using (var con = fac.CreateConnection() as FbConnection)
{
if (con == null)
{
throw new InvalidOperationException("No FbConnection returned...");
}
con.ConnectionString = bld.ConnectionString;
con.Open();
using (var cmd = fac.CreateCommand() as FbCommand)
{
if (cmd == null) { throw new InvalidOperationException("No FbCommand returned..."); }
cmd.Connection = con;
cmd.CommandText = "alter table mytable drop constraint PK_uid";
cmd.ExecuteNonQuery();
}
}