★★:まあある

インポートでエラーが発生しちゃったんだけど、どうしよう...

Dr.Sumエラー解決までの近道 - データインポート時のデータ型、日付フォーマット、引用符の問題」「Dr.Sumエラー解決までの近道 - データインポート時のエンコード、制御コード」ではよくあるインポート時のエラーと対処方法について紹介しました。

今回は発生頻度は低いものの、使い込んでいくと稀に発生するインポートのエラーと対処法をご紹介いたします。

ユニーク制約エラー

インポート先のテーブルにユニーク制約がないのになぜかユニーク制約エラーが発生することがあります。
この現象はなかなか気が付きにくいのですが、確認いただきたいのはコンパウンドキーの設定です。

テーブル自体にはユニーク制約を設定していなくても、コンパウンドキーにユニーク制約がある場合には、
キーに設定した項目でユニークにならないとユニーク制約エラーが発生します。

コンパウンドキーにそのものついては前回の記事「複数の項目で主キーを設定したい」をご確認ください。

コンパウンドキーのユニーク制約あれっ?何でユニーク制約エラー っと思ったら確認してみてくださいね!

ロックエラー

並列でインポートや更新処理を行おうとした際にロックエラーが発生する場合があります。
同じデータベースの同じテーブルであれば当然なのですが、同じデータベースの異なるテーブルを更新した場合にも発生することがあります。

これはシステムテーブルという1つのデータベースに1つだけ存在するテーブルがあるのですが、データ更新時にはシステムテーブルも一緒に更新されるため、並列で更新タイミングが重なると、ロックエラーが発生する場合があります。


対応としてはエラーが発生したら時間をおいて再実行する、処理のタイミングを調整するなど運用側の対策をご検討ください。
また設定による対応としてはロックのタイムアウト値を調整することで回避できる場合がございます。

[サーバーの設定] [データベース] タブ - [タイムアウト]の設定でタイムアウトの設定値を現状よりも多く設定してみてください。

ロックタイムアウトの設定

ユニーク制約エラー、ロックエラーが発生したら思い出してくださいね!