我使用MySQL迁移工具包将SQL Server2008数据库迁移到MySQL。但是,它将我所有的bit类型都转换为tinyint。我的数据模型不喜欢这样,因为我有一堆表达式来测试true/false,而不是0-255。
有没有一种方法可以告诉工具包转换这些不同的,或者我可以在新数据库上运行的SQL进行转换?
发布于 2010-09-23 01:11:22
在MySQL中,5.0.5位之前的版本并不存在,所以迁移工具包可能还没有更新,但你可以使用TINYINT(1)来代替,根据mysql网站上的这句话:
从MySQL 5.0.3开始,BIT数据类型可用于存储位字段值。(在5.0.3之前,MySQL将BIT解释为TINYINT(1)。)在MySQL 5.0.3中,仅MyISAM支持BIT。MySQL 5.0.5将BIT支持扩展到MEMORY、InnoDB、BDB和NDBCLUSTER。
为了进行转换,您可以使用ALTER TABLE:
ALTER TABLE MODIFY TINYINT(1)
或者,如果你想使用新的bit类型,你也可以在这里进行细分,但由于它是比较新的,我认为我们仍然会遇到一些BIT类型的问题。
不过,没有一种很好的方法可以对所有列执行此操作,在导入之前,我通常使用sed或perl -pi在.sql文件中进行修改。
希望这能有所帮助!
https://stackoverflow.com/questions/3771712
复制相似问题