我现在正在尝试将Mysql db迁移到Sql Server,我在一些论坛中发现他们建议使用SSMA(SQL Sever迁移助手),但是当我尝试迁移具有日期时间的表时,它将返回错误“列不允许DBNull”仅迁移少于15%。数据库的名称相同(小写),我也尝试将并行数据迁移模式更改为自定义,零日期列,但是我没有找到解决方案。我的SQL Server数据库是2012
谢谢。
答案 0 :(得分:1)
您收到此错误,因为SQL Server中的目标表具有定义为NOT NULL约束的列,但MySQL的源表在该列中包含空值。您需要修复MySQL数据以消除空值,或者在SQL Server中更改表定义以允许空值(前提是该列不是主键的一部分,不允许使用空值)
答案 1 :(得分:0)
这是表格结构的屏幕截图
-Mysql
CREATE TABLE用户(
user_id int(10)unsigned NOT NULL AUTO_INCREMENT,
create_date datetime NOT NULL DEFAULT'0000-00-00 00:00:00',
last_login datetime NOT NULL DEFAULT'0000-00-00 00:00:00',
first_name varchar(255)NOT NULL DEFAULT'',
last_name varchar(255)NOT NULL DEFAULT'',
用户varchar(255)NOT NULL DEFAULT'',
通过varchar(32)NOT NULL DEFAULT'',
is_deleted tinyint(3)unsigned NOT NULL缺省值'0',
主键(user_id),
唯一键idx_userlogin(用户,密码)
)ENGINE = MyISAM AUTO_INCREMENT = 49018 DEFAULT CHARSET = latin1
创建表
[测试]。[用户]
(
[user_id] bigint IDENTITY(49018,1)NOT NULL,
[create_date] datetime2(0)NOT NULL,
[last_login] datetime2(0)NOT NULL,
[first_name] varchar(255)NOT NULL,
[last_name] varchar(255)NOT NULL,
[user] varchar(255)NOT NULL,
[pass] varchar(32)NOT NULL,
[is_deleted] tinyint NOT NULL,
)与(DATA_COMPRESSION = NONE)
致谢。