問題タブ [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 - 可能性のあるデータベースの破損を修正するには?

私は、アクセスアプリケーションにいくつかの簡単な修正を行っているクライアントにいます。しばらくの間、アクセスを試みましたが、すぐに回復しています。ただし、興味深い問題を発見しました。

一部のレポートで、「レコードが削除されました」というエラーが表示されます。レポートを確認しましたが、1 つのテーブルに問題があるようです。そのテーブルを開くと、すべての列が「#deleted」とマークされているレコードを見つけます。明らかに、この行が原因のようです。ただし、その行を削除しようとしても、実際には何も起こりません。テーブルを再度開くと、行はまだ存在します。

データベースに破損がありますか?このレコードを完全に削除するにはどうすればよいですか?

編集: MS2000バージョンです

解決策:単純な圧縮/修復では機能しませんでした。代わりに、データベースを 2003 ファイル形式に変換しました。圧縮/修復を提案する最初の回答にマークを付けました。これは、正しい方向に向けられたためです。ありがとう!

0 投票する
3 に答える
24697 参照

sql-server - SQL Server:サーバーにすべてのチェック制約をチェックさせる方法は?

Enterprise Manager *によって生成された一部のスクリプト(またはそうでない場合は関係ありません)は、NOCHECKを使用してチェック制約を作成したようです。

これで、誰かがテーブルを変更すると、SQL Serverは失敗したチェック制約に遭遇し、エラーをスローします。

SQLにすべてのチェック制約を通過させてチェックさせることはできますか?

ランニング:

以前に無効にされたチェック制約のみを有効にし、実際にはチェックしません。

脚注

* SQL Server 2000

0 投票する
3 に答える
294 参照

database - デプロイされたアプリケーションでデータベースとソフトウェアバージョンの不一致をキャッチするにはどうすればよいですか?

サーバー上の共通データベースにアクセスするスタンドアロンアプリケーションを開発しています。私の組織では数十人が使用します。

ソフトウェアとデータベースの設計を更新する必要があることはわかっています。これにより、誰かが古いソフトウェアを使用してデータベースに対してクエリを実行する可能性が生じます。

私はすでに、ユーザーが古いバージョンのアプリケーションを起動しようとした場合にキャッチするシステムを導入しています。ただし、これは、ほとんどの時間アプリケーションを維持している人を防ぐものではありません。

私のアイデアは、データベースにバージョンエントリ(tblVersionなど)を配置し、DB内のテーブル(tblVersionを除く)のレコードが追加、更新、または削除されるたびにチェックすることでしたが、単に読み取るだけではありません。

このようにして、ユーザーが古いバージョンのSWを使用している場合でも、(私が思うに)DBを破損する可能性があるものを見つけることができます。DBのバージョンをコードの内容と照合し、追加、更新、または、不一致がある場合は操作を削除します。同時に、DB読み取りのtblVersionに多くのチェックのオーバーヘッドを追加することはありません。

私の質問: これは音ですか?それについて行くより良い方法はありますか?もしそうなら、何ですか?

ありがとう!

0 投票する
1 に答える
20052 参照

ruby-on-rails - Rails 3: 結合された値を検証する

Rails 2.x では、検証を使用して、次のような一意の組み合わせ値があることを確認できます。

対応する移行では、次のようになります。

これにより、夫と妻の組み合わせがデータベース内で一意になるようになります。現在、Rails 3 では検証構文が変更され、scope 属性がなくなっているようです。次のようになります。

Rails 3で結合された検証をどのように達成できるか考えていますか? Rails 2.x のバリデーションは Rails 3 でも機能するので、最初の例を引き続き使用できますが、「古い」ように見えます。より良い方法はありますか?

0 投票する
1 に答える
1140 参照

zend-framework - Doctrineの「SQLSTATE[23000]:整合性制約違反」

理由はよくわかりませんが、Doctrineの整合性制約違反が発生します。

Schema.yml

これが私のデータフィクスチャ(data.yml)です

0 投票する
3 に答える
875 参照

php - MySQL マルチインサート? INSERT 失敗後の MySQL DB の整合性

一度に複数のテーブルに行を挿入することはできますか? ID で関連付けられた複数のテーブルを作成する場合。INSERT が失敗した場合に整合性を維持するための最良の方法は何ですか?

0 投票する
2 に答える
565 参照

forum - データベースをフォーラム (SMF、phpBB) データベースと統合することはできますか?

ユーザーベースを持つ Web アプリケーションがあります。フォーラムを追加したいのですが、ユーザーに再度登録してほしくありません。

Rails/Postgresql を使用しています。

フォーラムを統合して、自分のサイトに登録したユーザーがフォーラムにも登録されるようにすることはできますか?

ありがとう

0 投票する
2 に答える
25652 参照

mysql - MySQL の整合性をチェックする方法は?

古いマシンに drupal サイト用の大きな MySQL 5 データベースがあります。新しいデータベースにバックアップして復元した後、次のようになりました。

ERROR 1064 (42000) 行* *: SQL 構文にエラーがあります。''captcha_success_form_ids|a:1:{s:13:\"user_register\";s:13:\"user_register\";}sp' の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。ライン1

このエラーの原因がどのテーブルかわかりません (「user_register」というテーブルがありません)。それで、別の失敗したバックアップ/復元作業を行う前に、元のデータベースの整合性を簡単にチェックするにはどうすればよいでしょうか? (コマンドラインアクセスがあります)。ありがとう

0 投票する
1 に答える
83 参照

sql-server-2008 - 別の列の値に基づいて列の不変性を強制するための単純な SQL の質問を希望します

Value 列と Status 列を含むテーブルがあります。

以下を実施するための最も簡単で効果的な方法は何ですか? アイデアは、お金の値がデータベースに入力され、誰かが「最終」と言った後、請求プロセスが開始されるため、変更がないことを保証する必要があるというものです。

  1. 新しい行には Status='New' があります (つまり、それ以外の場合は失敗します)
  2. Status='New' の場合にのみ値を更新できます
  3. ステータスは一度だけ「最終」に変更でき、その後は行全体が実質的に読み取り専用になります。