我正在尝试使用Filestream将图片插入数据库,我创建了表和列并创建了一个Insert语句,但我不断收到以下错误消息:
Msg 515,Level 16,State 2,Line 2 无法将值NULL插入列'id',表'Racing.dbo.Course_Info';列不允许空值。 INSERT失败。 声明已经终止。
第1列 - id - 唯一标识符 第2列 - RacecourseID - 这需要是11 第3列 - filestream_data
那么你能告诉我插入语句有什么问题吗?
INSERT INTO Course_Info (RacecourseID, filestream_data)
VALUES ('11', (SELECT *
FROM OPENROWSET(BULK N'C:\Users\Administrator\Desktop\Pictures for Database\Racecourses\Cheltenham-Racecourse.jpg', SINGLE_BLOB) as rs))
由于
韦恩
答案 0 :(得分:1)
我怀疑你会在这里踢自己。
USE Racing
INSERT INTO Course_Info(RaceCourseID,filestream_data)
SELECT 11, * FROM OPENROWSET(BULK N'C:\Users\Administrator\Desktop\Pictures for Database\Racecourses\Cheltenham-Racecourse.jpg', SINGLE_BLOB) rs
将是一种方式。 必须阅读错误消息RaceCourseID,不能为空,意味着你必须把一个放入。
答案 1 :(得分:1)
错误说明了一切:行的唯一标识符不可为空,并且您没有在列列表中指定它。另一个问题是您没有设置RacecourseID
。
要设置这两个值,请修改您的查询,如:
INSERT INTO Course_Info (id, RacecourseID, filestream_data)
SELECT newid(), 11, * FROM OPENROWSET(BULK N'filename.jpg', SINGLE_BLOB) as rs))
newid()将为每个插入的行生成一个新的唯一标识符,常量11将用于RacecourseID
字段。