数据库添加信息报错

刚刚开始觉得是字段类型给错了  必须给一个默认值,然而并非php

而后综合参考了哈网上html

连接:mysql

查看错误    https://www.linuxidc.com/Linux/2017-08/146204.htmlinux

Mysql如何取消严格模式    http://www.linuxeye.com/database/2909.htmlsql

 

 

查看错误数据库

开发需求要求经过php后台程序导入数据到mysql的某个库的表中,可是报错:Incorrect integer value: '' for column 'id' at row 1。同时本身在mysql5.6的数据库的这个表中insert into 一条数据,insert into log values('','admin','31','002t'),仍是报错出现上面一样的错误。spa

解决办法:
后来查了下MySQL的资料。发现5以上的版本若是是空值应该要写NULL
这种问题通常mysql 5.x上出现。我用的mysql5.1
官方解释说:得知新版本mysql对空值插入有"bug",要在安装mysql的时候去除默认勾选的enable strict SQL moderest

同时我线上的mysql数据库的版本为mysql5.6.20.
因而找到一文档:htm

mysql5.6 sql_mode设置
参考资料:
因为数据人员的需求,如今须要修改mysql的sql_mode 
sql_mode默认是sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
这时候我在/etc/my.cnf配置以下
sql_mode=NO_ENGINE_SUBSTITUTION
重启后仍是
mysql> SELECT @@GLOBAL.sql_mode;
+--------------------------------------------+
| @@GLOBAL.sql_mode |
+--------------------------------------------+
| STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+
1 row in set (0.00 sec)
这是由于我编译安装的目录下面有一个文件叫my.cnf,然而这个文件里有sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 这一项
把这个my.cnf  mv my.cnf my.cnf.ori
 grep sql_mode /usr/local/mysql/my.cnf.ori 
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLESblog

同时在/etc/my.cnf 文件中设置:
sql_mode= NO_AUTO_Create_USER,NO_ENGINE_SUBSTITUTION
grep "sql_mode" /etc/my.cnf
sql_mode=NO_AUTO_Create_USER,NO_ENGINE_SUBSTITUTION

再重启mysql

mysql> SELECT @@GLOBAL.sql_mode;
+--------------------------------------------+
| @@GLOBAL.sql_mode                          |
+--------------------------------------------+
| NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+
此时开发再次导入数据到后台,再也不报错。

 

 

取消严格模式

方法1、修改my.cnf 一、设置启动参数,将默认sql_mode改成宽松模式 使用命令: echo sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION /etc/my.cnf 或手动修改: vi /etc/my.cnf 找到sql-mode关键字,若没有,

方法1、修改my.cnf
一、设置启动参数,将默认sql_mode改成宽松模式
使用命令:
echo "sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" >> /etc/my.cnf
或手动修改:
vi /etc/my.cnf
找到sql-mode关键字,若没有,在文件尾添加一行
替换成:
sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIO
 
二、重启MySQL
service mysqld restart
 
方法2、修改启动脚本
一、设置启动脚本参数
使用命令:
sed -i "s#\"\$\*\"#--sql-mode=\"NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\"#" /etc/init.d/mysqld
或手动修改:
vi /etc/init.d/mysqld
找到
other_args="$*"
改为
other_args="--sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 
 
二、重启MySQL
service mysqld restart
相关文章
相关标签/搜索