これを行うには2つの方法があります。
- 現在のMysqlセッション(一時的な解決策)の場合
最初にクエリを実行して、mysqlサーバーの現在のSQLモードを取得します。
mysql> SELECT @@sql_mode;
+----------------------------------------------------------------+
| @@sql_mode |
+----------------------------------------------------------------+
|STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+----------------------------------------------------------------+
1 row in set (0.00 sec)
結果にSTRICT_TRANS_TABLES
が含まれている場合 、挿入クエリがNULL値を渡せるようにするには、その値を削除する必要があります。 mysqlユーザーがこの変更を適用し、これを適用した後にMysqlサーバーを再起動する権限を持っていることを確認してください。
SET GLOBAL sql_mode = '';
- Mysqlの存続期間(永続的なソリューション)
my.cnfファイルを更新する必要があります。そのファイルの場所は次のとおりです:\ etc\my.cnfまたは\etc\ mysql \ mysql.cnf
のような[mysqld]の下にいくつかのデフォルトパラメータが設定されます
[mysqld]
innodb_file_per_table=1
default-storage-engine=MyISAM
performance-schema=0
max_allowed_packet=268435456
open_files_limit=10000
その下に1行追加するだけです
sql-mode=""
このファイルを変更した後は、必ずMysqlServerを再起動してください。通常、rootユーザーがファイルの所有者になるため、サーバーでrootユーザーでログインする必要があります。
このSQLモードの機能を理解するための詳細については。
STRICT_TRANS_TABLES
トランザクションストレージエンジンに対して厳密なSQLモードを有効にし、可能な場合は非トランザクションストレージエンジンに対して有効にします。詳細については、厳密なSQLモードを参照してください。
参照: http://dev.mysql.com /doc/refman/5.7/en/sql-mode.html#sqlmode_strict_trans_tables
NO_AUTO_CREATE_USER
認証情報が指定されていない限り、GRANTステートメントが新しいユーザーアカウントを自動的に作成しないようにします。ステートメントは、IDENTIFIED BYを使用して空でないパスワードを指定するか、IDENTIFIEDWITHを使用して認証プラグインを指定する必要があります。
参照: http://dev.mysql.com /doc/refman/5.7/en/sql-mode.html#sqlmode_no_auto_create_user
NO_ENGINE_SUBSTITUTION
CREATETABLEやALTERTABLEなどのステートメントで、無効になっている、またはコンパイルされていないストレージエンジンが指定されている場合は、デフォルトのストレージエンジンの自動置換を制御します。
参照: http://dev.mysql.com /doc/refman/5.7/en/sql-mode.html#sqlmode_no_engine_substitution