SSMA列“列”不允许使用DBNull。值

时间:2018-08-23 18:18:47

标签: mysql sql-server

我现在正在尝试将Mysql db迁移到Sql Server,我在一些论坛中发现他们建议使用SSMA(SQL Sever迁移助手),但是当我尝试迁移具有日期时间的表时,它将返回错误“列不允许DBNull”仅迁移少于15%。数据库的名称相同(小写),我也尝试将并行数据迁移模式更改为自定义,零日期列,但是我没有找到解决方案。我的SQL Server数据库是2012

谢谢。

2 个答案:

答案 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

  • SQL Server

创建表 [测试]。[用户]
(    [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)

致谢。