2016-09-21 9 views
0

MariaDBでデータベースを実行しています。プライマリキーの自動番号付けを使用します。私のローカル開発システムでは、すべてが期待通りに機能します。MariaDB仮想マシンの自動番号

同じデータベースとシステムがクライアントシステムにインストールされています。この場合、クライアントはWindows Serverを実行している仮想マシンでインストールを実行することを選択しています。

このシステムは数週間見つかっていて、最近数日間に奇妙な問題が発生しました。今日は既存のレコードを編集しようとしましたが、レコードの代わりに主キー0の新しいレコードが更新されましたデータベースに追加されるため、自動インクリメントは確実に機能しません。

どうすればいいですか?何が原因でしょうか?

データベースを確認して修復します。

答えて

0

2つの異なるシステム上の同じデータベース、同じバージョンのmariadbではなく、Windowsのバージョンが少し異なります。 1つのシステム上のストアドプロシージャは、nullではなく0を送信しました。あるシステムでは、0はnullとして扱われ、新しいレコードが作成されました。もう1つのシステムでは、0がデータベースIDとして解釈され、これが原因です。

私は今ではnullはIDが> 0

1

自動インクリメントは、挿入したときにのみ始まり、(その属性の)値は提供されません。したがって、手動で更新することはできます。私は自動増分が失敗していないと言います。

+0

でない場合には、レコードが0の主キーを持っていることに失敗した送信であることを確認してください...どのようにそれが成功することができますか? – SPlatten

+0

おそらく "ユーザーエラー"です。挿入を行ったステートメントを見てみましょう。私はそれが "0"明示的にauto-inc列に格納されている疑いがあります。 –