sql >> データベース >  >> RDS >> Mysql

Djangoで独自のチェックを使用して競合状態を回避する方法

    標準的な方法は、次のようにこれを処理しないことです。

    1. あなたのケースで失敗する確率は0に近いです;
    2. 障害の重大度は非常に低いです。

    何らかの理由で、問題が発生しないことを確認する必要がある場合は、自分で行ってください。

    イベントのシーケンスを詳細に分析していませんが、SERIALIZABLE分離レベルを使用しても実際には役に立たないと思います。それは、IntegrityErrorを引き起こすだけです。 (またはDatabaseError )別の場所で育てられます。

    Model._perform_unique_checksをオーバーライドする 悪い考えのように聞こえますが、可能であればモンキーパッチを使用しない方がよいでしょう(ここでは 可能)。

    起こりそうもないエラーを防ぐためにテーブルロックを使用することに関しては...まあ、私は大ファンではないので、それもお勧めできません。

    同様の質問に対する良い答えは次のとおりです: https://stackoverflow.com/a/3523439/176186 -IntegrityErrorをキャッチすることに同意します 再試行は、おそらく問題に対処するための最も簡単な方法です。

    編集:私はこれを見つけました: Symfony2-フォーム送信後に一意の制約エラーから回復する方法は? @pidの答えに同意します。



    1. MySQLで整数に空の文字列を許可するにはどうすればよいですか?

    2. タイムゾーンが等しいPostgres時間

    3. Visual Studio Server Explorerはカスタムデータベースプロバイダーをサポートしていますか?

    4. 科学的記数法MySQLをオフにします