zoukankan      html  css  js  c++  java
  • mysql数据库的test类型

    文章参考自

    window系统参考:http://blog.sina.com.cn/s/blog_46f7bb6d0102vde3.html

    linux 参考:http://www.linuxeye.com/database/2909.html

    背景

    公司的数据库规范是,每个字段必须not null 且 必须有默认值

    问题

    设置为test类型后,字段不能设置默认值

    解决(不建议取消)

    取消数据库的严格模式

    *********windows下**********

    1、 找到mysql安装根目录下的my.ini文件

    2、 找到这样一行:

    sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

    3、 在其前面加‘#’将其注释掉:

    #sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

    4、 重启mysql服务

    5、 重新执行你的mysql语句
    *************linux下*************

    方法一、

    1)修改my.cnf1、设置启动参数,将默认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

    原因

    1、 MYSQL5.x是不允许BLOB/TEXT类型的字段拥有默认值的。

    2、 由于MYSQL是在‘strict mode’严格模式下工作的,如果改为非严格模式,即可

    3、 MYSQL5.x在windows下是默认以‘strict mode’工作的,当执行上面的语句时,会给你一个错误或者警告信息

    但是严格模式为什么不能设置默认值的真正原因还不知道

    拓展

    1、何为严格模式  http://koda.iteye.com/blog/288882

    I. Strict Mode阐述 
    根据 mysql5.0以上版本 strict mode (STRICT_TRANS_TABLES) 的限制: 
    1).不支持对not null字段插入null值 
    2).不支持对自增长字段插入''值,可插入null值 
    3).不支持 text 字段有默认值 

  • 相关阅读:
    修改VNC的分辨率
    How to use WinSCP with public key authentication
    CentOS-7-x86_64-DVD-1511.iso
    6.828
    Tampermonkey版Vimium
    servlet+jsp完成简单登录
    Servlet知识点小结
    HTTP基础知识点小结
    LeetCode 371两数之和
    LeetCode53 最大子序列问题
  • 原文地址:https://www.cnblogs.com/shuaiandjun/p/9672010.html
Copyright © 2011-2022 走看看