1

会社の古いサーバーから新しいサーバーにシステムをコピーしています。以前のシステムの開発には関与していませんでした。彼らはデータベースにレコードを挿入する現在の(複雑な)ウェブページを持っています、そして私はそれを完全には理解していません。ただし、各ページのコードとデータベース設定はまったく同じです。(私のバージョンでは)未完成のフォームを挿入しようとするとField 'invoiceNo' doesn't have a default value、以前のシステムで同じ未完成のフォームを送信すると(不完全な)データが作成されます。

原因フィールドの設定を確認しましたが、デフォルト値が「Null」のNotNullに設定されています。両方のデータベースが同じように設定されているのに、同じ挿入データが異なる方法で処理されるのはなぜですか?

古いMySQLバージョン:5.0.41-community-nt

新しいMySQLバージョン:5.5.20

古いMySQL管理バージョン:1.2.12

新しいMySQL管理バージョン:1.2.17

申し訳ありませんが、私が話していることの手がかりがあまりないように思える場合は、申し訳ありません。古いシステムは私にとって見知らぬ人であり、巨大で複雑なので、実際にはわかりません。しかし、どんな質問にも答えることができます。

4

1 に答える 1

1

新しいサーバーが「厳密」に設定されているか、新しいバージョンが導入されたときに下位互換性が失われた可能性があります。

問題は、フィールドが「nullではない」ことを期待しているが、nullを提供している(つまり、期待するように設定されているデータを提供していない)場合、このフィールドをデフォルトで「0」に変更すると、nullフィールドはデフォルトで0になります。代わりに、データは期待どおりに追加する必要があります。(ただし、フィールドが「nullではない」と予想している場合は、「null」を送信しないでください。デフォルト= 0でハッキングする前に、そのルートの原因を確認します!)

于 2012-07-23T16:00:57.340 に答える