正在创建更长的内容表


Creating longer content table

我想为页面内容创建一个大的存储空间。以下是我尝试过的:

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列不能具有默认值。

  • 您已经将列类型交换为contentauthor

  • 您可能滥用了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');