2

何百もの Web サイトで実行されているシステムを使用していますが、初めてエラーが発生します。誰かがこのエラーの原因を教えてくれることを望んでいたので、それを削除しようとしました。

ページを追加しようとすると問題が発生します。

INSERT INTO pages (parent, name, type, sort) VALUES ('0', 'test', 'text', '37.5');

これにより、次のエラーが吐き出されます。

[nativecode=1364 ** Field 'text' doesn't have a default value]

これはコードベースである可能性があると思ったので、phpMyAdmin をアップロードしましたが、エラーは引き続き発生しました。

と呼ばれる TEXT フィールドがありますtext。これにはデフォルト値はありませんが、必要になることはありません。今までなしでうまくいきました。

このサーバーでデフォルト フィールドを設定しようとすると、次のエラーが発生します。

#1101 - BLOB/TEXT column 'text' can't have a default value 

基本的に、問題は - 何が起こっているのか?

MySQLi は MySQL とは異なりますか? これが原因でしょうか。

私のサーバーは mysql 5.0.5 を実行しており、このサーバーは mysql 5.0.51a を実行しています。これが原因ではないと安全に仮定できますか?

この原因がどこにあるのかについて、誰か考えや推測さえありますか?

4

4 に答える 4

1

これは古い質問だと思いますが、同様の問題があり、回答なしでGoogle経由でこの質問を見つけたので、他の誰かがそうする場合に備えて、ここに私の解決策があります:

私の場合、ローカル マシンでショッピング カートを実行しようとしましたが、質問に記載されているようなデータベース エラーが発生し続けました。私は MySQL 5.5.12 を使用していましたが、選択したショッピング カートの php が古い MySQL バージョン用に作成されていることがわかりました。これにより、エラーや非互換性のフラグが立てられ続けました。ダウングレードするのと同様の問題がある場合は、お勧めしません。幸いなことに、ダウングレードする必要はありません。

ここで必要なのは、互換性の問題を引き起こしているMySQL strict モードを無効にすることです。これを行うには、phpMyAdmin/SQLyog (または選択したインターフェイス) を介して次のクエリを実行するだけです。

SET @@global.sql_mode='';

明確にするために、2 つの単一引用符 (') を使用します。

MySQL 厳密モードを無効にする詳細またはその他の方法については、このサイトを参照してください: http://nickbartlett.com/wordpress/how-to-turn-off-mysql-strict-mode/

于 2012-07-26T11:17:44.970 に答える
0

'text'という名前のフィールドがnull許容でない場合、デフォルトがない場合は、フィールドに値を挿入する必要があります。2つのバージョンの動作に違いがある理由はわかりません。MySQLiは、MySQLの新しいバージョンで動作するMySQLドライバーのバージョンにすぎません(4.1以上だと思いますが、確かに思い出せません)。

于 2010-10-19T16:25:09.107 に答える
0

text挿入先のテーブルにフィールドがあり、NULLにすることはできない場合は、その値を設定する必要があります。そうしないと、デフォルト値が設定され、ご覧のとおりデフォルト値はありません。次のように、バッククォートを使用して予約語をエスケープし、その値を挿入してみてください。

INSERT INTO pages (parent, name, type, sort, `text`) VALUES ('0', 'test', 'text', '37.5', '');
于 2010-10-19T16:26:15.823 に答える
0

レガシーアプリをデバッグするときにこの同じ問題に遭遇し、MySQL構成ファイル(私のMacではmy.cnf、Windowsではおそらくmy.ini)に入り、 sql_mode =をコメントアウトすることで解決できましたファイルの下部にあるNO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES行。これが完了したら、変更を有効にするために mysql を再起動します。

于 2013-10-23T19:44:52.930 に答える