[go] database/sql包执行生成的SQL语句,遇到Incorrect Integer错误
2016-03-27 14:42
681 查看
database/sql包执行生成的SQL语句,遇到Incorrect Integer错误
我的MySQL结构是这样的:
locked列是tinyint类型,MySQL中tinyint是1字节的整型。
在Go结构体中我将locked字段定义为了bool类型,我的原意是打算将false视作0,将true视作1。
但当我生成最后的Insert语句——
执行的时候却出现错误——
于是我将结构的bool类型改为uint8,执行的时候
问题很明显,肯定是因为和MySQL建表时候列定义的类型不符合,我将所有列都以字符串的形式插入,在另一台电脑上,能成功执行。换了一台电脑就失败,我就纳闷怎么回事,转眼一想,最有可能的原因是strict mode,这台电脑上的MySQL因为开启了严格模式,所以在插入的时候不会进行转换,我将严格模式关掉,插入成功。
关于严格模式,在这篇文章中有讲。
我的MySQL结构是这样的:
locked列是tinyint类型,MySQL中tinyint是1字节的整型。
在Go结构体中我将locked字段定义为了bool类型,我的原意是打算将false视作0,将true视作1。
type Zgd_Users_Table struct { Id int64 `require:"true" auto_increment:"true" primary_key:"true"` User_name string `require:"true"` User_mobile string `require:"true"` Password string `require:"true"` Email string `require:"true" default:""` Nickname string `require:"true" default:"little zhe 001"` Level byte `require:"true" default:"3"` Locked bool `require:"true" default:"false"` Create_time string `require:"true" default:"zhe_user_0001"` Comment string `require:"true" defaulr:""` }
但当我生成最后的Insert语句——
INSERT INTO zgd_users_table (user_name,user_mobile,password,email,nickname,level,locked,create_time,comment) VALUES ("zhe_user_3387","19211111111","pass_0001"," ","狗蛋","0","false","2016-04-26 08:30:01.7811492 +0800 CST"," ");
执行的时候却出现错误——
panic: Insert row error:Error 1366: Incorrect integer value: 'false' for column 'locked' at row 1 [recovered] panic: Insert row error:Error 1366: Incorrect integer value: 'false' for column 'locked' at row 1
于是我将结构的bool类型改为uint8,执行的时候
create_time列又报错:
panic: Insert row error:Error 1292: Incorrect datetime value: '2016-04-26 08:32:36.7287341 +0800 CST' for column 'create_time' at row 1 [recovered] panic: Insert row error:Error 1292: Incorrect datetime value: '2016-04-26 08:32:36.7287341 +0800 CST' for column 'create_time' at row 1
问题很明显,肯定是因为和MySQL建表时候列定义的类型不符合,我将所有列都以字符串的形式插入,在另一台电脑上,能成功执行。换了一台电脑就失败,我就纳闷怎么回事,转眼一想,最有可能的原因是strict mode,这台电脑上的MySQL因为开启了严格模式,所以在插入的时候不会进行转换,我将严格模式关掉,插入成功。
关于严格模式,在这篇文章中有讲。
相关文章推荐
- 高性能Mysql主从架构的复制原理及配置详解
- 解决PLSQL Developer 插入中文 乱码问题
- django 修改models后 sqlite3 中不存在相应的表
- SQL Server存储过程Return、output参数及使用技巧
- Mac下用OracleSQLDeveloper连接Windows虚拟机的Oracle数据库
- Mac下用OracleSQLDeveloper连接Windows虚拟机的Oracle数据库
- CentOS下编写shell脚本来监控MySQL主从复制
- MySQL权限篇之DROP
- MySQL数据库维护、备份、和复制
- ABAP调优——Open SQL优化
- mysql企业常用架构和调优
- MySQL5.6系统变量--open_files_limit
- Oracle 11gR2 及PL/SQL Developer 安装使用遇到的问题
- Oracle 11gR2 及PL/SQL Developer 安装使用遇到的问题
- TP连接MYSQL的简单查询及添加
- django中运行连接mysql(使用pymysql代替MySQL_db)
- 使用SqlBulkCopy进行批量插入数据时踩过的坑
- DB SQL Monitor 会话状态及等待事件监控工具
- MySQL监控SQL及命中率脚本
- mysqldump: Couldn't execute 'SET OPTION SQL_QUOTE_SHOW_CREATE=1': You have an error in your SQL syntax; check the manual t