这个create table语句有什么问题

时间:2008-10-29 14:21:53

标签: sql mysql database

有没有人知道这个mysql的create语句有什么问题?

编辑:现在它说明错误接近:修订VARCHAR(20),paypal_accept TINYINT,pre_terminat'在第4行

感谢大家的帮助

使用sql beautifier后仍然出现错误

CREATE TABLE AUCTIONS (
  ARTICLE_NO      VARCHAR(20),
  ARTICLE_NAME    VARCHAR(100),
  SUBTITLE        VARCHAR(20),
  CURRENT_BID     VARCHAR(20),
  START_PRICE     VARCHAR(20),
  BID_COUNT       VARCHAR(20),
  QUANT_TOTAL     VARCHAR(20),
  QUANT_SOLD      VARCHAR(20),
  START           DATETIME,
  ENDS            DATETIME,
  ORIGIN_END      DATETIME,
  SELLER_ID       VARCHAR(20),
  BEST_BIDDER_ID  VARCHAR(20),
  FINISHED        VARCHAR(20),
  WATCH           VARCHAR(20),
  BUYITNOW_PRICE  VARCHAR(20),
  PIC_URL         VARCHAR(20),
  PRIVATE_AUCTION VARCHAR(20),
  AUCTION_TYPE    VARCHAR(20),
  INSERT_DATE     DATETIME,
  UPDATE_DATE     DATETIME,
  CAT_1_ID        VARCHAR(20),
  CAT_2_ID        VARCHAR(20),
  ARTICLE_DESC    VARCHAR(20),
  DESC_TEXTONLY   VARCHAR(20),
  COUNTRYCODE     VARCHAR(20),
  LOCATION        VARCHAR(20),
  CONDITION       VARCHAR(20),
  REVISED         VARCHAR(20),
  PAYPAL_ACCEPT   TINYINT,
  PRE_TERMINATED  VARCHAR(20),
  SHIPPING_TO     VARCHAR(20),
  FEE_INSERTION   VARCHAR(20),
  FEE_FINAL       VARCHAR(20),
  FEE_LISTING     VARCHAR(20),
  PIC_XXL         TINYINT,
  PIC_DIASHOW     TINYINT,
  PIC_COUNT       VARCHAR(20),
  ITEM_SITE_ID    VARCHAR(20),
    PRIMARY KEY ( `ARTICLE_NO` ));

该错误现在接近'CONDITION VARCHAR(20),修订VARCHAR(20),PAYPAL_ACCEPT TI'第29行

我真的看不出有什么问题,TINYINT需要一个参数吗?

MYSQL列名必须是大写吗?

9 个答案:

答案 0 :(得分:5)

watch VARCHAR(20),  **????** VARCHAR(20), 
auction_type VARCHAR(20),

在watch和auction_type之间,您错过了一个列名。只有varchar(20),要么删除它,要么添加缺少的列名。

答案 1 :(得分:4)

从最后:

  

pic_count VARCHAR(20),item_site_id);

item_site_id似乎没有类型。给它一个类型,你的查询验证......

(在此测试:http://www.wangz.net/cgi-bin/pp/gsqlparser/sqlpp/sqlformat.tpl以查找这些类型的错误)

答案 2 :(得分:3)

我认为列名“START”和“CONDITION”在MySQL中是“特殊”的?我所做的只是将美化的代码粘贴到查询浏览器中,并注意到一些列名称为“蓝色”...:P

答案 3 :(得分:3)

根据MySQL保留字列表检查列名:

http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html

您会看到CONDITION是保留字。您可以将MySQL保留字用于列名,但是您必须将它们用引号括起来,以清楚地告诉MySQL您在常规用法中没有使用该单词。

. . .
LOCATION    VARCHAR(20),
`CONDITION` VARCHAR(20),
REVISED     VARCHAR(20),
. . .

答案 4 :(得分:2)

格式化。

答案 5 :(得分:2)

提示:格式代码以提高可读性

我接受你的代码并应用简单的格式化......

CREATE TABLE auctions (
  article_no        VARCHAR(20),
  article_name      VARCHAR(100),
  subtitle          VARCHAR(20),
  current_bid       VARCHAR(20),
  start_price       VARCHAR(20),
  bid_count         VARCHAR(20),
  quant_total       VARCHAR(20),
  quant_sold        VARCHAR(20),
  start             DATETIME,
  ends              DATETIME,
  origin_end        DATETIME,
  seller_id         VARCHAR(20),
  best_bidder_id    VARCHAR(20),
  finished          VARCHAR(20),
  watch             VARCHAR(20),
  buyitnow_price    VARCHAR(20),
  pic_url           VARCHAR(20),
  private_auction   VARCHAR(20),
  auction_type      VARCHAR(20),
  insert_date       DATETIME,
  update_date       DATETIME,
  cat_1_id          VARCHAR(20),
  cat_2_id          VARCHAR(20),
  article_desc      VARCHAR(20),
  desc_textonly     VARCHAR(20),
  countrycode       VARCHAR(20),
  location          VARCHAR(20),
  condition         VARCHAR(20),
  revised           VARCHAR(20),
  paypal_accept     TINYINT,
  pre_terminated    VARCHAR(20),
  shipping_to       VARCHAR(20),
  fee_insertion     VARCHAR(20),
  fee_final         VARCHAR(20),
  fee_listing       VARCHAR(20),
  pic_xxl           TINYINT,
  pic_diashow       TINYINT,
  pic_count         VARCHAR(20),
  item_site_id
);

...我马上就可以看到 item_site_id 缺少数据类型。

答案 6 :(得分:2)

根据MySQL Reserved Keywords的列表,CONDITION是保留关键字,您必须将其转义(使用反向标记)以将其用作对象的名称(例如,表,列,等等。)。

我建议不要使用保留关键字作为列的名称(即使你将其转义),因为这会在将来编写查询时导致各种问题。

答案 7 :(得分:1)

“VARCHAR(20)”,不指定名称。

答案 8 :(得分:0)

关于缺少字段名称的答案是正确的(如果我有代表,会投票)但我还建议在'cat_2_id VARCHAR(20)'之后放置以下行:

PRIMARY KEY (`article_no`)