4

我正在试验 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)
  ):
4

1 回答 1

2

那些 liquibase 项目的人需要了解一些关于 SQL Server - 2005 及更高版本的最新版本的知识:

  • NTEXT早已被弃用 -NVARCHAR(MAX)改用
  • IMAGE也早已被弃用 -VARBINARY(MAX)改为使用

(但是,如果您处理的是 SQL Server 2000 或更早版本,这些数据类型就可以了)。

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

也许那里有一varchar列您尝试varbinary隐式转换为...

于 2010-10-13T19:14:49.117 回答