mysql 1294_mysql 报错 异常 exception

mysql报错:1406, "Data too long for column

pymysql.err.DataError: (1406, “Data too long for column 'songlist_url’ at row 1”)

查看网上资料有说因为数据库中设置的字符长度不够,我加长了以后依然会报错。另一种说法是由于输入了中文,编码出现了问题。

查看MySQL的status;,发现:Server characterset: latin1 Db characterset: latin1 Client

characterset: latin1 把latin1改换成utf8编码:

mysql> set character_set_client=utf8 ; mysql> set

character_set_connection=utf8 ; mysql> set character_set_database=utf8

; mysql> set character_set_server=utf8 ;

然后再用status;查看,编码转为utf8了,再继续运行…

但还是报错:pymysql.err.DataError: (1406, "Data too long for column)

在stackoverflow找到了方法

在MySQL中设置这个:mysql> SET @@global.sql_mode= '’;

就可以运行了!!

原因是:MySQL will truncate any insert value that exceeds the specified column

width. to make this without error try Switch your MySQL mode to not

use STRICT.

意思大概是MySQL将截断超过指定列宽度的任何插入值。为了让这个不报错,你可以尝试切换你的MySQL模式不使用严格模式。

————————————————

Error:1294–Invalid ON UPDATE clause for “xxx” column的问题

在mysql数据库建表的过程中,忘记改写默认字段,导致出现1294的错误,如下所示:

177516298_1_20191208044037548.png

这并不是长度不够或者默认为0,而是忘记设置当前时间。本人以mysql数据库可视化工具navicat为例说明。首先打开建表字段,time类型为timestamp,设置非空,如图所示:

177516298_2_20191208044037672.png

接着改变default的值为空,并且去掉On Update Curren_Timestamp前面的√,然后ctrl+s保存即可。

177516298_3_20191208044037766.png

接下来插入的数据就会显示相应的时间戳。

177516298_4_20191208044037876.png

导入sql遇到Invalid ON UPDATE

目的:将本地的sql数据导入到mysql中

问题1:导入过程中遇到了异常 Error Code: 1294 - Invalid ON UPDATE clause for 'comment_time' column

原因

当执行update操作是,并且字段有ON UPDATE CURRENT_TIMESTAMP属性。则字段无论值有没有变化,它的值也会跟着更新为当前UPDATE操作时的时间。

从高版本的mysql导数据到低版本往往会有这个错误,MySQL 5.5 每个表只允许一个列的默认值根据时间戳生成时间 。去掉即可。

解决方法:去掉ON UPDATE CURRENT_TIMESTAMP;

MySQL 5.6.5之前版本不支持多条DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT TIMESTAMP

创建数据表时失败,提示以下信息:

09-13-2016 07:47:49 ERROR o.h.t.h.SchemaUpdate [https-jsse-nio-443-exec-6] HHH000388: Unsuccessful: create table users (id bigint not null auto_increment, createdOn DATETIME DEFAULT CURRENT_TIMESTAMP, token varchar(33) not null unique, updatedOn DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, userName varchar(65) not null unique, primary key (id))09-13-2016 07:47:49 ERROR o.h.t.h.SchemaUpdate [https-jsse-nio-443-exec-6] Invalid default value for 'createdOn'

查找原因,发现是由于以下导致的:

createdOn DATETIME DEFAULT CURRENT_TIMESTAMP

updatedOn DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE

在http://www.mysqltutorial.org/MySQL-timestamp.aspx中有句话:

Note that since mysql 5.6.5, the DATETIME data type also has automatic initialization and automatic update feature. In addition, the DEFAULT_CURRENT_TIMESTAMP and ON UPDATE CURRENT TIMESTAMP attributes can be applied to multiple columns, not just 1 column in the previous versions.

即对于5.6.5之前的MySQL版本,不支持多条同时使用 DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT TIMESTAMP特性,使用mysql -v查了下我现在使用的mysql版本为5.5.49,即不支持多条同时使用。因此将mysql更新至5.6.31,问题解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值