我正在尝试创建一个附带数据库的GUI,我的SQL表是:
CREATE TABLE IF NOT EXISTS imagerecord (
PId int,
PName varchar(50) not null,
Photo varbinary(max)
)
很明显,我正试图在数据库中包含一个图像(至少,我认为我正在这样做),但我的系统没有识别"varbinary"数据类型,显示了以下错误:
Error code 1064, SQL state 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'max) )' at line 4
请告诉我该怎么办,我需要安装一些额外的软件吗?
您正在将VARBINARY(MAX)
的Microsoft SQL Server语法与CREATE TABLE IF NOT EXISTS
的MySQL语法混合使用。两种RDBMS实现都不支持这两种特性。
-
Microsoft SQL Server支持
MAX
作为长度,而不是特定的数字,但标准SQL和大多数其他品牌不支持此选项。 -
MySQL支持
IF NOT EXISTS
作为可选的修饰符,但这也不是标准的SQL,Microsoft也不支持此扩展。
你需要弄清楚你使用的是哪个品牌。事实上,MAX
给出了一个错误,但IF NOT EXISTS
并没有表明您正在使用MySQL。以下是相应文档页面的链接:
Microsoft SQL Server 2012:
- 创建表
- 二进制和可变二进制
MySQL 5.6:
- 创建表
- 二进制和可变二进制
MySQL中VARBINARY的最大长度为65535。如果您需要一个可以接受较长字符串的列,可以使用允许高达16MB的MEDIUMBLOB或允许高达4GB的LONGBLOB。