关于mysql 出现 1264 Out of range value for column 错误的解决办法

今天给客服恢复mysql数据的时候。本来测试好的数据。但是到了客户那里却死活不干活了。老报错!


1

INSERT INTO ka_tan4 set num=‘716641385999‘, username=‘admin‘,adddate=‘1353078270‘,rate=‘2‘,sum_m=‘500‘,tjrenid=‘1259‘

时出现错误:


1

#1264 - Out of range value adjusted for column ‘num‘ at row 1

原因:
新版本的MySQL对字段的严格检查。 通常在Linux下安装完mysql后,默认的sql_mode值是空,在这种情形下mysql执行的是一种不严格的检查,如果要插入的字段长度超过列定义的长度,那么mysql不会终止操作,而是会自动截断后面的字符继续插入操作!但是在windows下面却不会这样。而是直接终止报出上面的错误!

解决方法(两种方法任选一种即可):
1、修改my.ini,将


1

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

改为


1

sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

重新启动MySQL。
2、在执行sql语句前,先执行以下语句:
mysql_query("set sql_mode=‘‘");

3.修改mysql数据库表结构适应数据长度,最好的办法是修改配置文件。这样。平台差距就不会太大了!

经常使用的sql_mode值如下表:

Sql_mode值 描述
ANSI 更改语法和行为,使其更符合标准SQL。
STRICT_TRANS_TABLES 如果不能将给定的值插入到事务表中,则放弃该语句,对于非事务表,如果值出现在单行语句或多行语句的第一行,则放弃该语句。
TRADITIONAL Make
mysql的行为像“传统”SQL数据库系统。该模式的简单描述是当在列中插入不正确的值时“给出错误而不是警告”。注释:一旦发现错误立即放弃INSERT/UPDATE。如果你使用非事务存储引擎,这种方式不是你想要的,因为出现错误前进行的数据更改不会“滚动”,结果是更新“只进行了一部分”。
 

说明:如果把sql_mode的值设置成后面的两个值(即严格模式),那么当在列中插入或更新不正确的值时,mysql将会给出错误,并且放弃insert/update操作。在我们的一般应用中建议使用这两种模式,而不是使用默认的空或ANSI模式。但是需要注意到问题是,如果数据库运行在严格模式下,并且你的存储引擎不支持事务,那么有数据不一致的风险存在,如:一组sql中有两个dml语句,如果后面的一个出现了问题,但是前面的已经操作成功,那么mysql并不能回滚前面的操作,因此说设置sql_mode需要应用人员权衡各种得失,从而得到一个合适的选择
 (CSDN)

原文地址:https://www.cnblogs.com/lxwphp/p/9592027.html

时间: 2024-10-18 21:00:03

关于mysql 出现 1264 Out of range value for column 错误的解决办法的相关文章

mysql导入数据库中的存储过程和函数出现错误的解决办法

mysql导入数据库中的存储过程和函数出现错误的解决办法 调用一个远程拷贝的本地Mysql的储存过程 报错:[Err] 1449 - The user specified as a definer ('repl'@'192.168.1.%') does not exist  解决想法: 凭借以前经常见到的[email protected]报错,给root赋值所有权限: grant all privileges on *.* to [email protected]"%" identif

mysql-5.7.10-winx64 MySQL服务无法启动,服务没有报告任何错误的解决办法

总结报错原因:在my.init文件下新增data目录(datadir = F:\mysqldata ) 最新解压版本的mysql 解压安装的时候报错D:\mysql\mysql-5.7.10-winx64\bin>net start mysqlMySQL 服务正在启动 ....MySQL 服务无法启动. 服务没有报告任何错误. 请键入 NET HELPMSG 3534 以获得更多的帮助. mysql下面是没有data文件夹的,此文件夹不需要自己建 D:\mysql\mysql-5.7.10-wi

mysql-5.7.9-winx64 MySQL服务无法启动,服务没有报告任何错误的解决办法 转自【IT精英团】:http://www.itnpc.com/news/web/144832818227054.html

最新解压版本的mysql 解压安装的时候报错D:\mysql-5.7.9-winx64\bin>net start mysqlMySQL 服务正在启动 .MySQL 服务无法启动.服务没有报告任何错误.  mysql下面是没有data文件夹的,此文件夹不需要自己建. D:\mysql-5.7.9-winx64\bin>mysqld --console2015-11-23T14:46:03.711082Z 0 [Warning] TIMESTAMP with implicit DEFAULT v

mysql-5.7.9-winx64 MySQL服务无法启动,服务没有报告任何错误 的解决办法

mysql-5.7.9-winx64 MySQL服务无法启动,服务没有报告任何错误 最新解压版本的mysql 解压安装的时候报错 D:\mysql-5.7.9-winx64\bin>net start mysql MySQL 服务正在启动 . MySQL 服务无法启动. 服务没有报告任何错误. mysql下面是没有data文件夹的,此文件夹不需要自己建. D:\mysql-5.7.9-winx64\bin>mysqld --console 2015-11-23T14:46:03.711082Z

linux(centOS6) 安装Mysql 5.6.19数据库步骤、 问题以及相应的解决办法

数据库版本:Ver 14.14 Distrib 5.6.19, for Linux (x86_64) using  EditLine wrapper linux版本: Linux version 2.6.32-279.el6.x86_64 ([email protected]) (gcc ve rsion 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Fri Jun 22 12:19:21 UTC 20 12 采用的rpm安装方式. 1.官网下载

重启mysql提示:The server quit without updating PID file问题的解决办法

今天因为需要开启事件调度器event_scheduler,所以修改了mysql的配置文件/etc/my.cnf 就因为配置多了个分号,导致一直启动失败,如下图所示: 然后去网上搜了帖子(MySQL提示:The server quit without updating PID file问题的解决办法http://www.jb51.net/article/48625.htm),按照里面几种提供的方案都不能解决,于是查看mysql错误日志 #tail -n 400 /lutong/mysql/erro

Failed to issue method call: Unit mysql.service failed to load: No such file or directory的解决办法

Failed to issue method call: Unit mysql.service failed to load: No such file or directory的解决办法 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 1.软件环境: OpenSUSE 13.1 x64 MySQL 5.6.20 x64 2.采用RPM包安装MySQL 5.6.20 # rpm -ivh MySQL-server-5.6.20-1.sles11.x8

mysql导入导出sql文件,source导入速度慢的解决办法

1.导出整个数据库mysqldump -u 用户名 -p 数据库名 > 导出的文件名mysqldump -u dbuser -p dbname > dbname.sql 2.导出一个表mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名mysqldump -u dbuser -p dbname users> dbname_users.sql 3.导出一个数据库结构mysqldump -u dbuser -p -d --add-drop-table dbname &

MySql重装以后,修改数据库路径,打开以前的数据库报Table 'XX库.XX表' doesn't exist错误的解决办法

因为mysql主流的数据库引擎有MyISAM和InnoDB两种, 如果是MyISAM,直接把以前数据库拷贝到修改后的路径是可以的 但是InnoDB因为存储结构不同,必须还得把备份的innodb数据库表“*.frm”文件和innodb数据“ibdata1”文件拷到修改后的合适路径 参考资料:http://www.bcty365.com/content-35-2928-1.html https://blog.csdn.net/dihuangtian01/article/details/5177353