问题标签 [database-integrity]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
3421 浏览

mysql - 如何更安全地使用 MyISAM 表?

我喜欢 InnoDB 的安全性、一致性和自检性。

但我需要 MyISAM 的速度和重量。

如何使 MyISAM 不易因崩溃、不良数据等而损坏?通过检查(CHECK TABLE 或 myisamchk)需要很长时间。

我不是要求事务安全——这就是 InnoDB 的目的。但我确实想要一个可以快速重启的数据库,而不是几小时(或几天!)之后。

更新:我不是在问如何更快地将数据加载到表中。我已经对此表示反对,并确定为我的 LOAD DATA 使用 MyISAM 表要快得多。我现在追求的是降低使用 MyISAM 表的风险。也就是说,减少损坏的机会,提高恢复速度。

0 投票
5 回答
551 浏览

database - 如何修复可能的数据库损坏?

我在一个客户那里对他们的访问应用程序做一些快速修复。有一段时间我尝试了访问,但我正在迅速恢复。但是,我发现了一个有趣的问题:

对于某些报告,我收到“记录已删除”错误。我检查了报告,似乎一张桌子有问题。打开该表时,我发现所有列都标记为“#deleted”的记录。所以很明显,这一行似乎是罪魁祸首。但是,当我尝试删除该行时,并没有真正发生任何事情。如果我重新打开表,该行仍然存在。

数据库中是否存在损坏?我怎样才能永久删除此记录?

编辑:这是一个 MS2000 版本

解决方案:简单的压缩/修复不起作用。我将数据库转换为 2003 文件格式,这成功了。我已经标记了建议压缩/修复的第一个答案,因为它为我指明了正确的方向。谢谢!

0 投票
3 回答
24697 浏览

sql-server - SQL Server:如何让服务器检查其所有检查约束?

似乎 Enterprise Manager* 生成的一些脚本(或者不是,没关系)创建了检查约束WITH NOCHECK

现在,当任何人修改表时,SQL Server 都会遇到失败的检查约束,并抛出错误。

我可以让 SQL 遍历所有的检查约束并检查它们吗?

跑步:

只启用以前禁用的检查约束,它实际上并不检查它们。

脚注

* SQL Server 2000

0 投票
3 回答
294 浏览

database - 如何在已部署的应用程序上捕获数据库和软件版本不匹配?

我正在开发一个访问服务器上公共数据库的独立应用程序。它将被我组织中的几十个人使用。

我知道我需要更新软件和数据库的设计。这创造了有人将使用旧软件对数据库执行查询的可能性。

如果用户尝试启动应用程序的过时版本,我已经有一个系统可以捕获。但是,这并不能防止大多数时间保持应用程序运行的人。

我的想法是在数据库中放置一个版本条目(在 tblVersion 或类似的东西中),并在每次添加、更新或删除数据库中任何表中的任何记录(tblVersion 除外)时检查它,而不仅仅是读取。

这样,即使用户拥有过时版本的 SW,我也可以捕获(我认为)可能损坏数据库的内容:检查数据库中的版本与代码中的内容,并禁止添加、更新、如果不匹配,则删除操作。同时,我不会将大量检查的开销添加到 tblVersion 以进行 DB 读取。

我的问题: 这是声音吗?有没有更好的方法来解决它?如果是这样,是什么?

谢谢!

0 投票
1 回答
20052 浏览

ruby-on-rails - Rails 3:验证组合值

在 Rails 2.x 中,您可以使用验证来确保您具有唯一的组合值,如下所示:

在相应的迁移中,它可能如下所示:

这将确保丈夫/妻子组合在数据库中是唯一的。现在,在 Rails 3 中,验证语法发生了变化,范围属性似乎消失了。现在看起来像:

知道如何在 Rails 3 中实现组合验证吗?Rails 2.x 验证在 Rails 3 中仍然有效,所以我仍然可以使用第一个示例,但它看起来很“旧”,有更好的方法吗?

0 投票
1 回答
1140 浏览

zend-framework - Doctrine 中的“SQLSTATE [23000]:违反完整性约束”

尽管我真的不明白为什么,但我确实违反了 Doctrine 的完整性约束。

架构.yml

这是我的数据夹具(data.yml)

0 投票
3 回答
875 浏览

php - MySQL 多插入?插入失败后的 MySQL 数据库完整性

是否可以一次将一行插入到多个表中?如果你做几个由一个ID相关的表;如果 INSERT 失败,确保保持完整性的最佳方法是什么?

0 投票
2 回答
565 浏览

forum - 是否可以将我的数据库与论坛(SMF、phpBB)数据库集成?

我有一个带有用户群的 Web 应用程序。我想添加一个论坛,但我不希望用户再次在那里注册。

我正在使用 Rails/Postgresql。

是否可以集成论坛,以便在我的网站注册后,用户也将在论坛中注册?

谢谢

0 投票
2 回答
25652 浏览

mysql - 如何检查 MySQL 的完整性?

我有一个大型 MySQL 5 数据库,用于旧机器上的 drupal 站点。在新数据库上备份和恢复后,我得到:

ERROR 1064 (42000) at line * *: 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 ''captcha_success_form_ids|a:1:{s:13:\"user_register\";s:13:\"user_register\";}sp' 附近使用正确的语法1号线

我不确定哪个表是此错误的来源(我没有名为“user_register”的表)。所以我想知道如何在进行另一次失败的备份/恢复工作之前快速检查原始数据库的完整性?(我有命令行访问权限)。谢谢

0 投票
1 回答
83 浏览

sql-server-2008 - 希望简单的 SQL 问题,用于根据另一列的值强制列的不变性

我有一个包含值列和状态列的表。

执行以下操作的最简单和最有效的方法是什么?这个想法是将货币价值输入数据库,然后有人说“最终”,然后我需要保证没有变化,因为计费过程开始了。

  1. 新行的 Status='New' (否则失败)
  2. 值只能在 Status='New' 时更新
  3. 状态可以恰好一次更改为“最终”,之后整行实际上是只读的。