【问题标题】:What is wrong with this create table statement [duplicate]这个创建表语句有什么问题[重复]
【发布时间】:2010-09-19 19:20:11
【问题描述】:

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

编辑:现在它指出错误已接近:在第 4 行修改了 VARCHAR(20)、paypal_accept TINYINT、pre_terminat'

感谢大家的帮助

使用 sql 美化器后仍然报错

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` ));

错误现在位于第 29 行的“CONDITION VARCHAR(20), REVISED VARCHAR(20), PAYPAL_ACCEPT TI”附近

实在看不出有什么问题,TINYINT需要参数吗?

MYSQL 列名必须大写吗?

【问题讨论】:

  • 如果您不知道如何格式化它,Josh,在帖子文本框上方有一个“代码”按钮(看起来像二进制)。选择您的代码并单击该按钮。否则,空白将无法正确保留。
  • @John Sheehan -- 删除无关紧要的代码。仅显示存在您实际需要实际帮助的实际问题的代码。
  • 退出编辑问题。现在所有的答案都没有任何意义。如果必须编辑,请添加更新部分。
  • 我投票我们关闭问题并摆脱它。也许从更明智的版本重新开始。

标签: sql mysql database


【解决方案1】:
watch VARCHAR(20),  **????** VARCHAR(20), 
auction_type VARCHAR(20),

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

【讨论】:

    【解决方案2】:

    从头到尾:

    pic_count VARCHAR(20),item_site_id);

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

    (在此处测试:http://www.wangz.net/cgi-bin/pp/gsqlparser/sqlpp/sqlformat.tpl 用于发现此类错误)

    【讨论】:

    • +1。我也看到了,正准备发帖。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      对照 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),
      . . .
      

      【讨论】:

        【解决方案5】:

        格式。

        【讨论】:

          【解决方案6】:

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

          我采用您的代码并应用简单的格式...

          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 缺少数据类型。

          【讨论】:

            【解决方案7】:

            根据MySQL Reserved Keywords 的列表,CONDITION 是保留关键字,您必须对其进行转义(使用反引号)才能将其用作对象的名称(例如表、列等)。

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

            【讨论】:

              【解决方案8】:

              “VARCHAR(20)”没有指定名称。

              【讨论】:

                【解决方案9】:

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

                PRIMARY KEY (`article_no`)
                

                【讨论】:

                • “Above mine”随着您的答案移动而失去上下文。
                猜你喜欢
                • 1970-01-01
                • 2011-01-17
                • 1970-01-01
                • 2011-06-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多