当前位置: 首页 > 面试题库 >

MySQL太长的varchar截断/错误设置

狄赞
2023-03-14
问题内容

我有两个MySQL实例。当数据太长时,第一个会在插入时截断字符串。第二个引发错误:

ERROR 1406 (22001): Data too long for column 'xxx' at row 1

我希望第二个也截断数据。是否有任何MySQL设置来管理此行为?


问题答案:

您可以禁用STRICT_TRANS_TABLESSTRICT_ALL_TABLES。这样可以自动截断插入的字符串。

引用来自MySQL Documantation。

严格模式控制MySQL如何处理数据更改语句(例如INSERT或UPDATE)中的无效或缺失值。值可能由于多种原因而无效。例如,它可能具有错误的列数据类型,或者可能超出范围。当要插入的新行不包含其定义中没有显式DEFAULT子句的非NULL列的值时,缺少值。(对于NULL列,如果缺少该值,则插入NULL。)

参考:MySQL Server SQL模式



 类似资料:
  • 问题内容: 当执行以下SQL查询时: 引发以下错误: 如何解决这个问题? 表结构: 问题答案: 您不需要关键字。这是UPDATE语句的正确语法:

  • 我有我的班级电影: 和我的控制器方法: 我得到一个错误: Servlet.service()的servlet[springDispatcher]在上下文与路径[/web编程]抛出异常[请求处理失败;嵌套异常org.springframework.dao.DataIntegrityViolationException:无法执行语句;SQL[n/a];嵌套异常是org.hibernate.except

  • 问题内容: 我不确定这是什么错误! 我没有双值字段或数据! 我浪费了整整一个小时试图解决这个问题! 这是我的查询 这是我要显示结果的表的show create表 问题答案: 此消息表示您正在尝试比较or 子句中的数字和字符串。在您的查询中,唯一可能发生的地方是;。确保它们具有相似的声明,或使用显式将数字转换为字符串。 如果关闭模式,则错误应变为警告。

  • 问题内容: 错误代码:1406。数据对于列而言太长 现在一些值 插入记录超过 如果我们的 它显示错误信息 错误代码:1406。数据对于列而言太长 但是我的期望是,我想在表中至少插入前45个字符 如果问题不清楚,请告诉我。 我知道此错误的原因。我正在尝试插入比数据类型长度更多的值。 我想要MySQL中的解决方案,因为它可能在中。所以我希望它也会出现在 MySQL中 。 问题答案: MySQL将截断任

  • 从我的应用程序注册表单中,我试图将复选框值插入到mysql表中,但它抛出错误1406 Data对于列来说太长了。复选框的值为 0 或 1。而我的表结构是,创建表测试(checkbox_response位(1))... 我经历了一些事情,找到了解决这个问题的方法。解决方案是,我刚刚更改了sql模式SET@@global。sql_mode=“”…正确插入后。 虽然“我的数据类型大小”适合复选框值,但为

  • 问题内容: 我有一张这样的桌子: 和这样的一个: 和这样的SQL语句 如果我解释给我这个: 对于一百万行,这非常慢。我尝试使用以下方法在products.name上添加索引: 这给出了: 我认为Sub_part列显示已在索引中(以字节为单位)的前缀,如本页中所述。 当我重新解释查询时,我得到: 看起来好像没有使用新索引。如 本页所述,如果索引是前缀索引,则不会用于排序。实际上,如果我用以下方法截断