有没有人知道这个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列名必须是大写吗?
答案 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`)