我想为页面内容创建一个大的存储空间。以下是我尝试过的:
CREATE TABLE `pages` (
`id` int(4) NOT NULL auto_increment,
`name` varchar(65) NOT NULL default '',
`content` varchar(65) NOT NULL default '',
`author` MEDIUMBLOB() NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=2 ;
--
-- Dumping data for table `pages`
--
INSERT INTO `members` VALUES (1, 'test', 'TEST_TEST_TEST');
我得到错误:
#1064 - 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 '() NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=2' at line 5
有什么建议吗?
试试这个:
CREATE TABLE `pages` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(65) NOT NULL,
`content` LONGTEXT NOT NULL,
`author` MEDIUMBLOB NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE=MyISAM;
我发现的一些问题:
-
如果不想为列指定格式详细信息,则必须省略括号。你不能让它们空着。例如
INT(10)
或INT
,但不是INT()
。 -
MEDIUMBLOB
不接受参数:它是MEDIUMBLOB
而不是MEDIUMBLOB()
。 -
MEDIUMBLOB
列不能具有默认值。 -
您已经将列类型交换为
content
和author
。 -
您可能滥用了
NOT NULL
约束,将其应用于所有列,然后默认为空字符串。 -
无论如何,请确保您知道
''
和NULL
之间的区别。 -
TYPE
关键字被弃用多年,最终在MySQL/5.5上被删除。更换为ENGINE
。
试试这个
CREATE TABLE `pages` (
`id` int(4) NOT NULL auto_increment,
`name` varchar(65) NOT NULL default '',
`content` text NOT NULL default '',
`author` MEDIUMBLOB() NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=2 ;
我认为第一个问题是blob()
语句。为什么不直接使用`varchar():
`author` varchar(1000) NOT NULL default '',
插入还需要四列,而您只提供了三列。您应该养成在insert
:中显式列出列的习惯
INSERT INTO `members`(id, name, content)
VALUES (1, 'test', 'TEST_TEST_TEST');