zoukankan      html  css  js  c++  java
  • 数据库添加信息报错

    刚刚开始以为是字段类型给错了  必须给一个默认值,然而并不是

    然后综合参考了哈网上

    链接:

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

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

    查看错误

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

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

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

    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_TABLES

    同时在/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 |
    +--------------------------------------------+
    此时开发再次导入数据到后台,不再报错。

    取消严格模式

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

    方法一、修改my.cnf
    1、设置启动参数,将默认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
     
    2、重启MySQL
    service mysqld restart
     
    方法二、修改启动脚本
    1、设置启动脚本参数
    使用命令:
    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" 
     
    2、重启MySQL
    service mysqld restart
  • 相关阅读:
    web项目中添加logger日志
    oracle 创建表空间
    从request中读数据流
    通过request获取ID地址的方法
    创建表空间的sql语句
    plsql点击不再提示后需重新提示
    js文件报错Syntax error on token "Invalid Regular Expression Options", no accurate correction
    java知识
    DevC++出现[Error] ld returned 1 exit status,如何解决才好呢?
    1
  • 原文地址:https://www.cnblogs.com/dennyxiao/p/9732423.html
Copyright © 2011-2022 走看看