将MySQL tinyint类型转换为位

时间:2010-09-22 16:59:24

标签: mysql sql-server-2008 migration types

我使用MySQL Migration Toolkit将SQL Server 2008数据库迁移到MySQL。但是,它将我的所有bit类型转换为tinyint。我的数据模型不喜欢这个,因为我有一堆表达式测试的是真/假,而不是0-255。

有没有办法告诉Toolkit转换这些不同的,或者我可以在新数据库上运行的一些SQL进行转换?

1 个答案:

答案 0 :(得分:1)

在5.0.5之前的MySQL中Bit并不存在,所以Migration Toolkit可能还没有更新,但你可以使用TINYINT(1)代替来自mysql网站的引用:

“从MySQL 5.0.3开始,BIT数据类型可用于存储位字段值。(在5.0.3之前,MySQL将BIT解释为TINYINT(1)。)在MySQL 5.0.3中,仅支持BIT对于MyISAM.MySQL 5.0.5扩展了对MEMORY,InnoDB,BDB和NDBCLUSTER的BIT支持。“

为了转换你可以使用ALTER TABLE:

ALTER TABLE MODIFY TINYINT(1);

或者如果你想使用新的BIT类型,你也可以在那里使用它,但是因为它有点新,我认为我们将继续在BIT类型中遇到一些问题。

对于所有列,实际上并没有很好的方法,我通常在导入之前使用sed或perl -pi在我的.sql文件中进行修改。

希望有所帮助!