MySQL BIT数据类型混乱

时间:2015-05-07 14:22:21

标签: 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 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数据类型,开发了数据库交互代码并成功测试了系统。我有一个第二台开发笔记本电脑,我曾经用它来执行错误修复,当部署时间来到系统也正常工作时。

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

0 个答案:

没有答案