【发布时间】:2022-01-11 08:03:19
【问题描述】:
我正在尝试将一列的长度调整为 64 个字符:
ALTER TABLE [dbo].[consumption]
ALTER COLUMN [resourceGroup] VARCHAR(64) NOT NULL
但我收到以下错误:
字符串或二进制数据将在表“dbo.consumption”的列“resourceGroup”中被截断。截断值:''。
这对我来说没有意义:你怎么能截断任何内容?
任何帮助将不胜感激。
【问题讨论】:
-
@DaleK 我做到了,是的,我看到的数据超过 64 个字符。我的问题更多是关于为什么错误消息没有显示违反列的实际字符串以及为什么我得到一个空字符串,因为这具有误导性。
-
看起来就像
ALTER TABLEi.stack.imgur.com/nKsC1.png 的怪癖,它使用了扩展的错误消息但没有违规值 -
@DaleK 不,此列由不能包含空白字符的数据填充。
-
@MartinSmith 这是有道理的。它只是让我陷入了一个循环,因为我正在使用的数据源“保证”进入此列的数据不会超过 64 个字符,所以我假设 SQL 服务器正在做一些奇怪的事情,而不是假设数据来源提供的数据违反了自己的合同。
-
带有值详细信息的扩展错误消息是最近才出现的,所以我假设他们没有在此代码路径中实现它(可能只知道一个任意值可能会失败在这种情况下不太可能有用)
标签: sql sql-server tsql