【发布时间】:2012-04-19 17:39:24
【问题描述】:
我听说过在生产系统中使用 Firebird 数据库的两大反对意见:不支持复制,以及无法恢复备份的严重问题。但那是不久前的事了,我知道 Firebird 已经(并且仍在)不断改进和发展。
那么今天这些问题的相关性有多大,是否有任何其他破坏交易的因素会使其在生产系统中不必要地难以使用?
【问题讨论】:
-
恢复备份有什么问题?
-
@MarkRotteveel (仍然是?)可以创建无法恢复的备份,即 IIRC 的一种方法是将 NOT NULL 约束添加到具有 NULL 的列。 DDL 成功,但如果您在用有效值替换 NULL 之前进行备份,则从该备份恢复失败。
-
@ain 使用
-NO_VALIDITY恢复应该会有所帮助。 (之后唯一的问题是您需要自己重新添加这些约束)。 -
顺便说一句,只有在手动编辑系统表的情况下才能为包含空数据的列添加非空约束,但从未推荐这样做。
-
@WarmBooter:还有第二种方法可以解决这个问题。创建表 FOO。插入 FOO(数据)。 ALTER TABLE FOO 添加列栏不为空。突然你有问题了。在某些数据库中,除非表有 0 行或者您在 ALTER TABLE 中提供了默认值,否则会引发错误,但 Firebird 接受它。