这个简单的MySQL CREATE TABLE语句出了什么问题?

时间:2011-07-22 04:19:57

标签: mysql phpmyadmin create-table

这是一个简单的CREATE TABLE语句,我在PHPMyAdmin中编写。好的,我知道我可以在PHPMyAdmin中轻松实现,但我喜欢完全控制。这是声明:

CREATE TABLE profile
(
id int NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
type int(1) NOT NULL,
view int(1) NOT NULL default '1',
ver int(1) NOT NULL default '2',
email NOT NULL varchar(32),
password NOT NULL varchar(16),
first varchar(32),
last varchar(32),
site varchar(64),
address varchar(32),
city varchar(32),
zip int,
state char(2),
country varchar(50),
about text,
datereg int(20)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

5 个答案:

答案 0 :(得分:3)

我换了

view int(1) NOT NULL default '1',
ver int(1) NOT NULL default '2',
email NOT NULL varchar(32),
password NOT NULL varchar(16),

view int(1) NOT NULL default 1,
ver int(1) NOT NULL default 2,
email varchar(32) NOT NULL ,
password varchar(16) NOT NULL ,

并且有效

答案 1 :(得分:3)

有多个错误导致您的SQL语句无效。

请改为尝试:

CREATE TABLE `profile` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `type` int(1) NOT NULL,
  `view` int(1) NOT NULL DEFAULT '1',
  `ver` int(1) NOT NULL DEFAULT '2',
  `email` varchar(32) NOT NULL,
  `password` varchar(16) NOT NULL,
  `first` varchar(32),
  `last` varchar(32),
  `site` varchar(64),
  `address` varchar(32),
  `city` varchar(32) ,
  `zip` int(11),
  `state` char(2),
  `country` varchar(50),
  `about` text,
  `datereg` int(20),
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

一些补充:

  • 尝试避免在表格中使用保留字(如视图,最后,第一个等)。有可能(如果 正确逃脱),但它有助于使用任何一个。
  • 逃离你的领域 名称和您的表名称正确。
  • 阅读手册: http://dev.mysql.com/doc/refman/5.1/en/create-table.html

答案 2 :(得分:2)

试试这个=)

CREATE TABLE `db`.`profile` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `type` INT(1) NOT NULL ,
  `view` INT(1) NOT NULL DEFAULT 1 ,
  `ver` INT(1) NOT NULL DEFAULT 2 ,
  `email` VARCHAR(32) NULL ,
  `password` VARCHAR(16) NULL ,
  `first` VARCHAR(32) NULL ,
  `last` VARCHAR(32) NULL ,
  `site` VARCHAR(64) NULL ,
  `address` VARCHAR(32) NULL ,
  `city` VARCHAR(32) NULL ,
  `zip` INT NULL ,
  `state` CHAR(2) NULL ,
  `country` VARCHAR(50) NULL ,
  `about` TEXT NULL ,
  `datereg` INT(20) NULL ,
  PRIMARY KEY (`id`) )
ENGINE = MyISAM DEFAULT CHARSET=utf8;

答案 3 :(得分:1)

view是一个MySQL关键字。如果要使用具有相同名称的列,则必须使用反斜杠(如

)将其包围
`view` int(1) NOT NULL default 1,

答案 4 :(得分:0)

如果没有看到错误是什么,我会说它失败了,因为你试图用MySQL保留关键字命名一个列 - 我的猜测是view

如果你在列名周围放置反引号,它将允许你使用保留字。 请记住,该表上的任何其他查询也需要围绕使用保留字的列名称的反引号。

例如

CREATE TABLE profile
(
`id` int NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
`type` int(1) NOT NULL,
`view` int(1) NOT NULL default '1',
`ver` int(1) NOT NULL default '2',
`email` NOT NULL varchar(32),
`password` NOT NULL varchar(16),
`first` varchar(32),
`last` varchar(32),
`site` varchar(64),
`address` varchar(32),
`city` varchar(32),
`zip` int,
`state` char(2),
`country` varchar(50),
`about` text,
`datereg` int(20)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
相关问题