Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL Server上使用Liquibase时出错_Sql_Sql Server_Liquibase - Fatal编程技术网

在SQL Server上使用Liquibase时出错

在SQL Server上使用Liquibase时出错,sql,sql-server,liquibase,Sql,Sql Server,Liquibase,我正在试验Liquibase,试图让它将一个数据库复制到另一个数据库。不幸的是,我一直遇到这样的错误: 不允许将数据类型varchar隐式转换为varbinary。 使用CONVERT函数运行此命令 询问 它生成的SQL如下所示: CREATE TABLE [dbo].[Attachment] ( [Applicantid] uniqueidentifier NOT NULL, [Attachmentid] uniqueidentifier CONSTRAINT DF_Atta

我正在试验Liquibase,试图让它将一个数据库复制到另一个数据库。不幸的是,我一直遇到这样的错误:

不允许将数据类型varchar隐式转换为varbinary。 使用CONVERT函数运行此命令 询问

它生成的SQL如下所示:

CREATE TABLE [dbo].[Attachment] (
    [Applicantid] uniqueidentifier NOT NULL, 
    [Attachmentid] uniqueidentifier CONSTRAINT DF_Attachment_Attachmentid DEFAULT '(newid())' NOT NULL, 
    [AttachmentType] INT CONSTRAINT DF_Attachment_AttachmentType DEFAULT 0 NOT NULL, 
    [FileAttachment] image NOT NULL, 
    [FileName] ntext NOT NULL, 
    [FileType] nvarchar(125) NOT NULL, 
    [Filesize] INT NOT NULL, 
    [CCN] varbinary(8) CONSTRAINT DF_Attachment_CCN DEFAULT '0' NOT NULL, 
    [CreateDate] DATETIME CONSTRAINT DF_Attachment_CreateDate DEFAULT (getdate()) NOT NULL, 
    [LastUpdate] DATETIME CONSTRAINT DF_Attachment_LastUpdate DEFAULT (getdate()) NOT NULL, 
    CONSTRAINT [PK_Attachment] PRIMARY KEY (Attachmentid)
  ):

这些liquibase项目人员需要了解有关SQL Server-2005及更高版本的一些信息:

  • NTEXT
    长期以来一直被弃用-请改用
    NVARCHAR(MAX)
  • IMAGE
    也早就被弃用了-改用
    VARBINARY(MAX)
(但是,如果您使用的是SQL Server 2000或更早版本,那么这些数据类型就可以了)

另外:仅仅从那个表定义,就无法找出为什么会出现这个错误。这是您的原始(源)表,还是Liquibase生成的目标表??如果是:您是否有机会看到/跟踪/检查用于将数据从旧表迁移到新表的SQL语句


可能有一个
varchar
列,您试图隐式地转换为
varbinary

不知道liquibase,但是对于数据库之间的任何数据类型转换问题,我的一般解决方案是将数据加载到一个没有约束且尽可能使用通用数据类型的临时表中。然后使用显式转换将数据移动到目标表。这里唯一一个varbinary的列是CCN列,所以我从这里开始…有没有可能您试图在这个列中放入一些不是varbinary的内容(8)?感谢数据类型指针,下一个版本的liquibase将使用更新的类型