sql问题:将截断字符串或二进制数据。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql问题:将截断字符串或二进制数据。相关的知识,希望对你有一定的参考价值。
这是我在查询分析器打的代码:
Create DataBase zhusu
GO
use zhusu
create table 旅馆(
编号 char(5) primary key,
名称 char(6) not null,
地址 char(10) not null,
备注 char(10)
)
create table 投宿(
编号 char(5) not null,
名称 char(6) not null,
一周价格 char(3),
联系人 char(3),
电话 int,
foreign key (编号) references 旅馆(编号)
)
go
alter table 投宿
add constraint uk_name
unique(名称)
use zhusu
insert 旅馆 values('艺苑度假村','洲乡艺苑路17号',null)
insert 旅馆 values('0002','理想饭店','洲乡理想街111号',null)
insert 旅馆 values('0003','乐工旅社','洲乡乐工街110号',null)
insert 旅馆 values('0004','莫内花园','洲乡莫内街109号',null)
insert 旅馆 values('0005','鲤鱼山庄','洲乡鲤鱼池108号',null)
insert 旅馆 values('0006','丰田纳园','洲乡丰田体育管',null)
insert 旅馆 values('0007','岁月民宿','洲乡岁月路100幢',null)
insert 旅馆 values('0008','大爱电场','洲乡大爱路',null)
insert 旅馆 values('0009','布拉格酒店','洲乡布拉格广场',null)
insert 旅馆 values('0010','路遇餐厅','洲乡路遇路1号',null)
insert 投宿 values('0002','理想饭店','1200','订房部',8777777)
insert 投宿 values('0003','乐工旅社','2300','蔡饱',8666666)
insert 投宿 values('0004','莫内花园','5000','富翁',8588888)
insert 投宿 values('0005','鲤鱼山庄','3800','范匹',8333333)
insert 投宿 values('0006','丰田纳园','2800','蔡雕',8111111)
insert 投宿 values('0007','岁月民宿','800','师仔',8222222)
insert 投宿 values('0008','大爱电场','1800','蔡饱',8666666)
insert 投宿 values('0009','布拉格酒店','8800','富翁',8588888)
insert 投宿 values('0010','路遇餐厅','1500','邦邦',8555555)
都看不出有什么毛病。却老提示
服务器: 消息 8152,级别 16,状态 9,行 1
将截断字符串或二进制数据。
语句已终止。
蛤。。谢谢啦。。确实是字段容量太小。。
Create DataBase zhusu
GO
use zhusu
create table 旅馆(
编号 varchar(10) primary key,
名称 varchar(20) not null,
地址 varchar(50) not null,
备注 varchar(40)
)
create table 投宿(
编号 varchar(10) not null,
名称 varchar(20) not null,
一周价格 varchar(5),
联系人 varchar(10),
电话 bigint,
foreign key (编号) references 旅馆(编号)
)
go
alter table 投宿
add constraint uk_name
unique(名称)
use zhusu
insert 旅馆 values('艺苑度假村','洲乡艺苑路17号',null)
insert 旅馆 values('0002','理想饭店','洲乡理想街111号',null)
insert 旅馆 values('0003','乐工旅社','洲乡乐工街110号',null)
insert 旅馆 values('0004','莫内花园','洲乡莫内街109号',null)
insert 旅馆 values('0005','鲤鱼山庄','洲乡鲤鱼池108号',null)
insert 旅馆 values('0006','丰田纳园','洲乡丰田体育管',null)
insert 旅馆 values('0007','岁月民宿','洲乡岁月路100幢',null)
insert 旅馆 values('0008','大爱电场','洲乡大爱路',null)
insert 旅馆 values('0009','布拉格酒店','洲乡布拉格广场',null)
insert 旅馆 values('0010','路遇餐厅','洲乡路遇路1号',null)
insert 投宿 values('0002','理想饭店','1200','订房部',8777777)
insert 投宿 values('0003','乐工旅社','2300','蔡饱',8666666)
insert 投宿 values('0004','莫内花园','5000','富翁',8588888)
insert 投宿 values('0005','鲤鱼山庄','3800','范匹',8333333)
insert 投宿 values('0006','丰田纳园','2800','蔡雕',8111111)
insert 投宿 values('0007','岁月民宿','800','师仔',8222222)
insert 投宿 values('0008','大爱电场','1800','蔡饱',8666666)
insert 投宿 values('0009','布拉格酒店','8800','富翁',8588888)
insert 投宿 values('0010','路遇餐厅','1500','邦邦',8555555)
这样应该就不会有问题了..
不过foreign key (编号) references 旅馆(编号) 这句话我没看懂什么意思...去了能不...= =! 参考技术A 不懂,沙发,看了,我也学习,等答案
SQL 字符串或二进制数据将被截断,列名
【中文标题】SQL 字符串或二进制数据将被截断,列名【英文标题】:SQL string or binary data would be truncated , column name 【发布时间】:2018-12-12 00:46:28 【问题描述】:我们有一个简单的 UI 应用程序,我们使用 SQL Server 数据库。问题是当用户提供的数据超过列长度并因此出现错误时:
字符串或二进制数据将被截断
是否可以在运行时找到导致此问题的列?我们的应用程序的设计方式是 UI 标签和列名是同步的。因此,如果我们可以在运行时找到列名,那么我们可以让用户在现场进行更正。
任何帮助将不胜感激。
【问题讨论】:
这是 sql server 中运行时间最长且令人恼火的问题之一。引擎不会告诉您哪一列有问题,即使它显然知道。您应该修复您的应用程序以不允许比列允许更多的字符。是的,这很烦人,但十多年来(或者现在可能接近两年),这一直是许多人希望解决的问题。 没有。去投票。 feedback.azure.com/forums/908035-sql-server/suggestions/… 同时,编写应用程序,使字段长度不能超过列长度。 ...如果您的应用程序已经将字符串限制为与数据库相同的长度,您将没有要跟踪的列。您是否查看了已解决此错误消息的 the 600+ other questions? 如果这是一个 mvc 应用程序,那么只需在您的属性上添加一个[StringLength]
属性,以便您获得客户端和服务器端验证。
【参考方案1】:
错误信息非常清楚:您试图放入此类字段的数据对于该字段本身来说太大了。检查您的插入语句。
然后查看列定义:您定义的长度为(例如)10 或 50 个字符,但您尝试插入的数据比这更长。 要么增加列的大小,要么减少要发送的数据的大小。
希望对你有所帮助..
【讨论】:
以上是关于sql问题:将截断字符串或二进制数据。的主要内容,如果未能解决你的问题,请参考以下文章
用户将在 SQL Server 中截断字符串或二进制数据