MySQL位数据类型混淆

MySQL位数据类型混淆,mysql,Mysql,我已经开发了一个数据库系统,使用MySQL存储一些测试数据 CREATE TABLE testtable ( TEST_IDX int(11) NOT NULL AUTO_INCREMENT, PASS_FLAG bit(1) NOT NULL, RESULT_STRING varchar(500) NOT NULL, TEST_DATE timestamp NULL DEFAULT NULL, LAST_MODDATE timestamp NOT NUL

我已经开发了一个数据库系统,使用MySQL存储一些测试数据

CREATE TABLE testtable ( 
   TEST_IDX int(11) NOT NULL AUTO_INCREMENT, 
   PASS_FLAG bit(1) NOT NULL, 
   RESULT_STRING varchar(500) NOT NULL, 
   TEST_DATE timestamp NULL DEFAULT NULL, 
   LAST_MODDATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
   TESTED_BY varchar(45) NOT NULL, 
   PRIMARY KEY (TEST_IDX) ) 
ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=latin1; 
使用的字段之一是一个标志,用于指示测试集的通过/失败状态。在我的开发机器上,我使用BIT数据类型,开发了数据库交互代码,并成功地测试了系统。我有一台二次开发的笔记本电脑,当系统正常运行时,我用它来进行bug修复


当我在生产机器上部署系统时,我设置了MySQL,并从笔记本电脑的转储文件中导入了数据库。当在我的两台开发机器上成功运行的程序试图执行错误“data to long for column”时,导致我的插入失败。这对我来说没有意义,除非mysql有一个设置,使得bit/tinyint/int(1)在安装过程中表现出奇怪的行为。我可以通过简单地将字段设置为INT(它认为INT(11))来正确地实现这个函数,但是我不应该这样做,我想知道为什么会发生这种情况。也许有人可以澄清一下位数据类型在MYSQL中是如何工作的。

您的
createtable
语句是什么?当出现错误时,尝试执行什么查询?创建表
testtable
TEST\u IDX
int(11)NOT NULL自动递增,
PASS\u标志
bit(1)NOT NULL,
RESULT\u STRING
varchar(500)不为空,
TEST\u DATE
timestamp NULL DEFAULT NULL,
LAST\u MODDATE
timestamp NOT NULL DEFAULT CURRENT\u timestamp ON UPDATE CURRENT\u timestamp,
TESTED\u BY
varchar(45)NOT NULL,主键(
TEST\u IDX
)ENGINE=InnoDB AUTO\u INCREMENT=31 DEFAULT CHARSET=latin1;插入查询不是由我的软件生成的,而是由National Instruments提供的模块生成的,该模块是我使用的Labview开发套件的一部分。因此,发布您的插入查询会带来错误。我捕获了来自MSSQL服务器的查询,但不是来自MySQL的查询。在MySQL中捕获查询最简单的方法是什么?捕获?什么意思?