0

これは、私が PHPMyAdmin で作成している単純な CREATE TABLE ステートメントです。OK、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;
4

5 に答える 5

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 ,

そしてそれは働いた

于 2011-07-22T04:26:45.047 に答える
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

いくつかの追加:

  • テーブルで予約語 (view、last、first など) を使用しないようにしてください。(適切にエスケープされていれば)可能ですが、何も使用しないとまったく役に立ちません。
  • フィールド名とテーブル名を適切にエスケープします。
  • マニュアルを読む: http://dev.mysql.com/doc/refman/5.1/en/create-table.html
于 2011-07-22T04:29:56.733 に答える
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;
于 2011-07-22T04:29:18.373 に答える
1

view は MySQL キーワードです。同じ名前の列を使用する場合は、次のようにバッククォートで囲む必要があります

`view` int(1) NOT NULL default 1,
于 2011-07-22T04:23:15.030 に答える
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;
于 2011-07-22T04:22:54.183 に答える