2017-11-23 18 views
2

INSERTを実行しようとすると問題が発生しましたが、それは成功していなくても成功しています。ANSI_QUOTESモードによる挿入

私のテーブル構造: table structure

注:given1given2given3必須フィールドです。

私は、次の方法(https://github.com/catfan/Medoo)を実行する私のアプリケーションで:

$this->medoo->insert('teste', ['dado2' => 11, 'dado3' => 'teste']); 

、data2はタイプSETのものであり、DATA3がタイプINTEGER`であるので、これは受け入れられないはずです。それでも、挿入は成功します。さらに、data1 は必須フィールドでも、という引数として渡されません。私は、MySQLのログをチェックし、次のエントリだ

データベースに手動でSQLを実行する
SET SQL_MODE=ANSI_QUOTES; 
INSERT INTO "teste" ("dado2", "dado3") VALUES ('11', 'teste'); 

を、私はこの問題は、ANSI_QUOTESを使用中であることを発見しました。データベースは何とか挿入を受け入れ、代わりにそれは警告を発行し、エラーメッセージの発行:
print screen of the return message

私はそれがMedooのソースコードを変更したり、MySQLへこの問題を報告する必要があると思いますが。私は何をすべきかわかりません。

MySQLバージョンを使用すると、列に収まらない値を挿入しようとしたとき、私はMySQLサーバがSTRICTモードに設定されている6.3.6

答えて

0

が、それはエラーが発生したMySQL Workbenchを使用5.7.14
です。 SET SQL_MODE=ANSI_QUOTES;を呼び出すと、この厳密なモードが無効になっている可能性が高くなります。

Medooフレームワークの著者に連絡するか、別のフレームワークを使用するか、PDOを使用してデータベースにアクセスしてみてください。

詳細については、mysql docs on server modesを参照してください。

+0

完璧な友人!情報をありがとう。 Medoo.php($ commands [] = 'SET SQL_MODE = ANSI_QUOTES')の121行目にコメントし、ANSI_QUOTESモードを直接MySQL設定に追加することで問題を解決しました。問題はMedooであり、ANSI_QUOTESだけを残すようにすべてのモードを削除するべきではなく、他のモードを維持してANSI_QUOTESを追加する必要があります。 –

関連する問題