MySQL“你的SQL语法有错误”错误

时间:2012-06-13 03:40:59

标签: mysql phpmyadmin

我的错误:

  

1064 - 您的SQL语法出错;检查与您的MySQL服务器版本相对应的手册,以便在第10行的')'附近使用正确的语法

我的错误是什么,解决方案是什么?

CREATE TABLE login(
user_name VARCHAR(10) NOT NULL DEFAULT",
password VARCHAR(10) NOT 'NULL DEFAULT",
email VARCHAR(30) NOT NULL DEFAULT",
account_type VARCHAR(10) NOT NULL DEFAULT",
ic INT(10) NOT NULL DEFAULT",
telephone_no INT(20) NOT NULL DEFAULT",
pin INT(20) NOT NULL DEFAULT",
gender VARCHAR(10) NOT NULL DEFAULT",
shipping_address VARCHAR(100) NOT NULL DEFAULT",
city VARCHAR(10)  NOT NULL DEFAULT",
state VARCHAR(10) NOT NULL DEFAULT",
country VARCHAR(10) NOT NULL DEFAULT",
zip_code INT(10) NOT NULL DEFAULT",
credit_type VARCHAR(10) NOT NULL DEFAULT",
credit_number INT(20) NOT NULL DEFAULT",
cvv2 INT(3) NOT NULL DEFAULT",
); 

2 个答案:

答案 0 :(得分:1)

这里的MSSQL开发人员(所以不确定我能为您的玩具RDBMS提供多少帮助),但是从阅读错误消息开始,您,之前会额外);

此外,您似乎在第三行有一个额外的',而您用于DEFAULT的语法没有意义(更不用说空字符串''重新设置INT列。)

也许:

CREATE TABLE login
  (
     user_name        VARCHAR(10) NOT NULL DEFAULT '',
     password         VARCHAR(10) NOT NULL DEFAULT '',
     email            VARCHAR(30) NOT NULL DEFAULT '',
     account_type     VARCHAR(10) NOT NULL DEFAULT '',
     ic               INT(10) NOT NULL DEFAULT 0,
     telephone_no     INT(20) NOT NULL DEFAULT 0,
     pin              INT(20) NOT NULL DEFAULT 0,
     gender           VARCHAR(10) NOT NULL DEFAULT '',
     shipping_address VARCHAR(100) NOT NULL DEFAULT '',
     city             VARCHAR(10) NOT NULL DEFAULT '',
     state            VARCHAR(10) NOT NULL DEFAULT '',
     country          VARCHAR(10) NOT NULL DEFAULT '',
     zip_code         INT(10) NOT NULL DEFAULT 0,
     credit_type      VARCHAR(10) NOT NULL DEFAULT '',
     credit_number    INT(20) NOT NULL DEFAULT 0,
     cvv2             INT(3) NOT NULL DEFAULT 0
  ); 

就我个人而言,我担心有人问这个问题有一个名为credit_number的字段和password字段,该字段与salt字段不匹配,password字段也不够长对于SHA1哈希。

答案 1 :(得分:0)

正确的语法是:

CREATE TABLE login (
    user_name VARCHAR(10) NOT NULL DEFAULT '',
    password VARCHAR(10) NOT NULL DEFAULT '',
    email VARCHAR(30) NOT NULL DEFAULT '',
    account_type VARCHAR(10) NOT NULL DEFAULT '',
    ic INT(10) NOT NULL DEFAULT 0,
    telephone_no INT(20) NOT NULL DEFAULT 0,
    pin INT(20) NOT NULL DEFAULT 0,
    gender VARCHAR(10) NOT NULL DEFAULT '',
    shipping_address VARCHAR(100) NOT NULL DEFAULT '',
    city VARCHAR(10)  NOT NULL DEFAULT '',
    state VARCHAR(10) NOT NULL DEFAULT '', 
    country VARCHAR(10) NOT NULL DEFAULT '',
    zip_code INT(10) NOT NULL DEFAULT 0,
    credit_type VARCHAR(10) NOT NULL DEFAULT '',
    credit_number INT(20) NOT NULL DEFAULT 0,
    cvv2 INT(3) NOT NULL DEFAULT 0
); 

我刚刚从您的创建语法中更正了语法,您应该下载一些工具,例如HeidiSQL(或PHPMyAdmin,这样您就不需要努力生成正确的DML语法)并制作确定你正在寻找什么默认值,因为我确信你不需要0作为所有整数字段的默认值,''(空字符串)作为所有varchar或char字段的默认值。

您是表设计的最佳决策者,我确信您可能不希望所有字段都为NOT NULL,其中一些字段也可能具有NULL值。现在,当您允许NULL值时,不需要为该字段指定DEFAULT。