我有两台运行 Firebird 的计算机(我们称它们为 A 和 B)和两个数据库文件(我们称它们为 a.fdb 和 b.fdb),都复制到两台计算机上。在 BI 上获取消息
b.fdb 不是有效的数据库 其他文件工作,在 A 上两个文件工作。
这很容易解释,如果 B 是旧版本,但它是新版本(它是 FB 2.1,由于这个问题,我安装了 FB 2.5)。文件 a.fdb 和 b.fdb 分别具有 ODS 11.1 和 10.1。看起来新版本的 FB 不再支持 ODS 10.1,我不敢相信。但我看不到其他解释,你能吗?
我正在使用 Firebird DB,并且执行了以下操作。我创建了一个数据库,并在其中填充了大量记录(数据库文件的大小为113MB)。然后我删除所有记录,但大小保持不变。有什么方法可以“缩小”或“打包”数据库文件吗?
我有两个简单的(仅用于解释我的问题)表
我想(在插入或更新表X之后)更新表Y使用来自X的实际记录中的变量.为此,我尝试使用触发器(在表X中),如下所示:
SET TERM ^^ ;
CREATE TRIGGER XYZFOR X ACTIVE AFTER INSERT OR UPDATE POSITION 0 AS
begin
if (new.CODE is distinct old.CODE) then
BEGIN
EXECUTE STATEMENT ('UPDATE Y SET CODE=:old.CODE, id_fromX=:old.IDX WHERE NUMBER=:old.NUMBER');
END
end ^^
Run Code Online (Sandbox Code Playgroud)
但我从服务器收到错误:
Execute statement error at jrd8_prepare :\
335544569 : Dynamic SQL Error
335544436 : SQL error code = -104
335544634 : Token unknown - line 1, column 23
335544382 : .
Statement : UPDATE Y SET CODE=:old.CODE, id_fromX=:old.IDX WHERE NUMBER=:old.NUMBER\ …Run Code Online (Sandbox Code Playgroud) 我正在开发一个应用程序,它将使用firebird嵌入式和/或postgres,具体取决于用户的复杂程度.firebird嵌入式的论点是应该减少安装,防火墙,UAC等问题.到目前为止,postgres就像在云上行走一样,但我遇到了火鸟的路障.该应用程序是.net,我正在使用此提供程序http://www.firebirdsql.org/en/net-provider/版本3.0.2
一切都在技术上有效,但嵌入了firebird我每秒只插入大约100条记录,而postgres每秒超过3000条记录!使用postgres,我将大量的INSERT INTO ...语句作为一个命令启动,这很好.对于火鸟来说,它并不顺利.这是什么工作(慢慢地)
String query = @"INSERT INTO Customers(ID, Name, SiteID) VALUES(1,'delta',2);
INSERT INTO Customers(ID, Name, SiteID) VALUES(2,'phoenix',2);
";
FbScript fbs = new FbScript(query);
fbs.Parse();
FbConnection fbc = new FbConnection(ConnectionString);
FbBatchExecution fbe = new FbBatchExecution(fbc, fbs);
fbe.Execute(true);
Run Code Online (Sandbox Code Playgroud)
但是,我试图没有解析.类似于第二个答案的东西使用isql或者在这里http://www.firebirdfaq.org/faq336/ 对firebird数据库运行多个插入查询
String sql = @"set term ^ ;
EXECUTE BLOCK AS BEGIN
INSERT INTO Customers(ID, Name, SiteID) VALUES(1,'delta',2);
INSERT INTO Customers(ID, Name, SiteID) VALUES(2,'phoenix',2);
end^";
FbCommand cmd = new FbCommand();
PrepareCommand(cmd, connection, (FbTransaction)null, CommandType.Text, sql, commandParameters, …Run Code Online (Sandbox Code Playgroud) 我有一个在 Apache Tomcat 6 上运行的 Web 应用程序,使用 ZK、Hibernate 和 Jaybird JDBC 来访问 Firebird 数据库。由于某些未知原因,在执行动态 SQL 的应用程序中执行尚未映射的操作后,它崩溃并出现以下异常:
错误:org.springframework.transaction.TransactionSystemException:无法回滚 JPA 事务;嵌套异常是 javax.persistence.PersistenceException:回滚时出现意外错误 javax.persistence.PersistenceException:回滚时出现意外错误 org.hibernate.TransactionException:JDBC 回滚失败 [SQL:335544726,HY000] org.firebirdsql.jdbc.FBSQLException:GDS 异常。335544726。从连接读取数据时出错。
原因:从连接读取数据时出错。...
那么,此后用户执行的任何操作都会导致以下错误:
错误:javax.persistence.PersistenceException:org.hibernate.exception.GenericJDBCException:无法执行查询org.hibernate.exception.GenericJDBCException:无法执行查询[SQL:335544721,HY000] org.firebirdsql.jdbc.FBSQLException:GDS异常。335544721. 无法完成对主机“”的网络请求。原因:无法完成对主机“”的网络请求。
系统崩溃了,就像失去了与数据库的连接一样。
以前有人经历过吗?
无论我做什么,我似乎无法使用Firedac连接到Firebird 2.5嵌入式数据库.有趣的是,昨天它似乎工作,现在突然间它不会.
相反,为了让我的脑袋突然停止工作,我开始重建一个干净的项目,这样我就可以一步一步地弄清楚发生了什么.我将下载的软件包的全部内容从Firebird添加(复制)到我的应用程序目录和数据库本身.
为了避免文件夹问题,我设置了Delphi环境选项,将所有文件(和exe放在同一目录中.然后我使用了Firebird*.doc文件夹中的建议,并将fbembed.dll重命名为fbclient.dll.一些Firedac Q&A关于我读过的问题,Firedac需要fbembed.dll文件.好吧,我已经尝试了两种方式,它无论如何都不会工作....).但是让我坚持第一个问题fbclient.dll.
为了建立连接,我在数据模块上放了一个FDPhysFBDriverLink1和一个FDConnection1.
现在FDPhysFBDriverLink1:它的BaseDriverID是FB.对于DriverID,我尝试了两个建议:首先使用'FB',然后提供fbclient.dll的完整路径.没有人似乎有所作为.
当我转到Firedac Connection编辑器并输入我的数据库文件的路径时,我得到"无法加载供应商库(fbclient.dll或fbembed.dll)....错误.但这两个文件都在应用程序exe文件夹中(就像在embarcadero网站上建议的那样.那么Firedac在哪里寻找文件?我对Firebird和Firedac有点厌倦,因为他们不能简单地解释为什么连接成功必须做的事情.他们给的只是一些模糊的选项,它们都不起作用.添加这个 - 添加......最后......失败.
因此,如果有人有直接回答如何做到这一点的经验(没有链接,请...我已经看过并尝试过所有这些)我会非常感激.尝试建立一个简单的连接几天是非常愚蠢的.我也尝试过与Unidac类似的结果.所以在我第99次精神崩溃之前,我该怎么办才能完成连接?
select mid from aplicacao\nwhere mid not in\n(\nselect distinct mid from aplicacao\ninner join prod_app on prod_app.mid=aplicacao.mid\nwhere prod_app.coditem=1\n)\nRun Code Online (Sandbox Code Playgroud)\n\n我尝试在 firebird 上搜索解决方案来改进此查询,但不幸的是 \xc2\xb4t 没有成功。请问有人可以帮助我吗?
\n我在服务器上托管了一个 Firebird 数据库。Firebird 可以在表格中显示已连接用户的列表,包括用户名、角色等MON$ATTACHMENTS。但是,我不知道如何获取一个特定客户端的 IP 地址。
例如:如果用户“USER”,来自192.168.1.77,连接在192.168.1.2(服务器)上,我怎样才能192.168.1.77通过 Firebird 查询获得这个地址?
编辑:MON$REMOTE_ADDRESS显示 DHCP 服务器地址,而不是本地客户端地址。
有人成功将 spring 连接到 .gdb 数据库或 .fdb 数据库吗?我需要很少的帮助来执行一些查询并将其显示在屏幕上。互联网上几乎没有关于将 spring 与 firebird 连接的信息......
谢谢
在我的数据库中,我有几个INTEGER类型的字段.我需要将其中一些更改为BIGINT.
所以我的问题是,我可以使用以下命令吗?
ALTER TABLE MyTable ALTER COLUMN MyIntegerColumn TYPE BIGINT;
Run Code Online (Sandbox Code Playgroud)
包含的数据是否以正确的方式转换?转换后这列是"真正的"BIGINT列吗?
我知道如果此列有限制(Trigger,ForeingKey,...),这是不可能的.但如果没有限制,可以这样做吗?
或者通过帮助列转换它更好:
MyIntegerColumn -> MyIntegerColumnBac -> MyBigIntColumn
Run Code Online (Sandbox Code Playgroud) firebird ×10
firebird2.5 ×2
jaybird ×2
.net ×1
c# ×1
database ×1
delphi ×1
delphi-xe6 ×1
firebird-3.0 ×1
firedac ×1
hibernate ×1
java ×1
jdbc ×1
notin ×1
select ×1
spring ×1
sql ×1
sql-update ×1
triggers ×1