zoukankan      html  css  js  c++  java
  • mysql 数据库 自动截取数据的问题---mysql的sql_model的四种模式:宽松模式、严格模式

    mysql支持的sql_mode模式:ANSI、TRADITIONAL、STRICT_ALL_TABLES和STRICT_TRANS_TABLES。 

    ANSI模式:宽松模式,对插入数据进行校验,如果不符合定义类型或长度,对数据类型调整或截断保存,报warning警告。

    TRADITIONAL模式:严格模式,当向mysql数据库插入数据时,进行数据的严格校验,保证错误数据不能插入,报error错误。用于事物时,会进行事物的回滚。

    STRICT_TRANS_TABLES模式:严格模式,进行数据的严格校验,错误数据不能插入,报error错误。只对支持事务的表有效。

    STRICT_ALL_TABLES模式:严格模式,进行数据的严格校验,错误数据不能插入,报error错误。对所有表都有效。

    问题描述:

    添加一个超长的文章的时候,文章内容字段被mysql截取后插入。

    debug:程序插入的sql没有问题。

    问题原因:mysql 使用了松散模式,造成自动截取。给debug带来困难,

    解决办法:

    1,开启mysql 严格模式,对开发有好处;

    2,换mysql的字段类型

    参考:

    下面贴一下mysql中和text相关的类型最大长度限制,请根据业务类型进行合理选择:

    TINYTEXT 最大长度是 255 (2^8 – 1) 个字符。

    TEXT 最大长度是 65535 (2^16 – 1) 个字符。

    MEDIUMTEXT 最大长度是 16777215 (2^24 – 1) 个字符。

    LONGTEXT 最大长度是 4294967295 (2^32 – 1) 个字符。

    通过修改MySQL的配置文件,在配置文件中查找sql-mode,将此行修改成为:

    sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

    如果查找不到sql-mode=则在[mysqld]下加入即可,推荐第二种方法,可以一劳永逸。

  • 相关阅读:
    DDD(Domain Driven Design) 架构设计
    兴哥:美团下一个十年,要让新一批管理者成长起来
    Java设计模式-Builder构造者模式
    社会需要转型变革,自己更需要转型变革-屡败屡战
    Guava 源码分析之Cache的实现原理
    缓存算法(FIFO 、LRU、LFU三种算法的区别)
    Guava---缓存之LRU算法
    Boost.Asio 网络编程([译]Boost.Asio基本原理)
    浅谈 Boost.Asio 的多线程模型
    boost.asio系列——io_service
  • 原文地址:https://www.cnblogs.com/duanxz/p/3770181.html
Copyright © 2011-2022 走看看