我的表结构:CREATE TABLE `code` (
  `id` int(11) NOT NULL auto_increment,
  `key` int(11) NOT NULL,
  `value` varchar(50) default NULL,
  `type` varchar(15) default NULL,
  `flag` char(1) NOT NULL default 'T',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC;
我执行语句:insert into code(key, value, type) values(2, '女', 'sex');然后报错如下:
错误码: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'key, value, type) values(2, '女', 'sex')' at line 1Execution Time : 00:00:00:000
Transfer Time  : 00:00:00:000
Total Time     : 00:00:00:000请问这是怎么回事,我不太熟悉mysql

解决方案 »

  1. 你的字段名是关键字,保留字。加上反引号` 就行了,如下。mysql> CREATE TABLE `code` (
        -> `id` int(11) NOT NULL auto_increment,
        -> `key` int(11) NOT NULL,
        -> `value` varchar(50) default NULL,
        -> `type` varchar(15) default NULL,
        -> `flag` char(1) NOT NULL default 'T',
        -> PRIMARY KEY  (`id`)
        -> ) ;
    Query OK, 0 rows affected (0.11 sec)mysql> insert into code(`key`, `value`, `type`) values(2, '女', 'sex');
    Query OK, 1 row affected (0.06 sec)mysql>
      

  2. 赞同楼上意见insert into code(`key`, `value`, `type`) values(2, '女', 'sex'); 
      

  3. 字段key ,type 是关键字,insert into ('key',value,'type') values(......)
      

  4. 8.3. Reserved WordsACCESSIBLE    ADD    ALL    
    ALTER    ANALYZE    AND    
    AS    ASC    ASENSITIVE    
    BEFORE    BETWEEN    BIGINT    
    BINARY    BLOB    BOTH    
    BY    CALL    CASCADE    
    CASE    CHANGE    CHAR    
    CHARACTER    CHECK    COLLATE    
    COLUMN    CONDITION    CONSTRAINT    
    CONTINUE    CONVERT    CREATE    
    CROSS    CURRENT_DATE    CURRENT_TIME    
    CURRENT_TIMESTAMP    CURRENT_USER    CURSOR    
    DATABASE    DATABASES    DAY_HOUR    
    DAY_MICROSECOND    DAY_MINUTE    DAY_SECOND    
    DEC    DECIMAL    DECLARE    
    DEFAULT    DELAYED    DELETE    
    DESC    DESCRIBE    DETERMINISTIC    
    DISTINCT    DISTINCTROW    DIV    
    DOUBLE    DROP    DUAL    
    EACH    ELSE    ELSEIF    
    ENCLOSED    ESCAPED    EXISTS    
    EXIT    EXPLAIN    FALSE    
    FETCH    FLOAT    FLOAT4    
    FLOAT8    FOR    FORCE    
    FOREIGN    FROM    FULLTEXT    
    GRANT    GROUP    HAVING    
    HIGH_PRIORITY    HOUR_MICROSECOND    HOUR_MINUTE    
    HOUR_SECOND    IF    IGNORE    
    IN    INDEX    INFILE    
    INNER    INOUT    INSENSITIVE    
    INSERT    INT    INT1    
    INT2    INT3    INT4    
    INT8    INTEGER    INTERVAL    
    INTO    IS    ITERATE    
    JOIN    KEY    KEYS    
    KILL    LEADING    LEAVE    
    LEFT    LIKE    LIMIT    
    LINEAR    LINES    LOAD    
    LOCALTIME    LOCALTIMESTAMP    LOCK    
    LONG    LONGBLOB    LONGTEXT    
    LOOP    LOW_PRIORITY    MASTER_SSL_VERIFY_SERVER_CERT    
    MATCH    MEDIUMBLOB    MEDIUMINT    
    MEDIUMTEXT    MIDDLEINT    MINUTE_MICROSECOND    
    MINUTE_SECOND    MOD    MODIFIES    
    NATURAL    NOT    NO_WRITE_TO_BINLOG    
    NULL    NUMERIC    ON    
    OPTIMIZE    OPTION    OPTIONALLY    
    OR    ORDER    OUT    
    OUTER    OUTFILE    PRECISION    
    PRIMARY    PROCEDURE    PURGE    
    RANGE    READ    READS    
    READ_WRITE    REAL    REFERENCES    
    REGEXP    RELEASE    RENAME    
    REPEAT    REPLACE    REQUIRE    
    RESTRICT    RETURN    REVOKE    
    RIGHT    RLIKE    SCHEMA    
    SCHEMAS    SECOND_MICROSECOND    SELECT    
    SENSITIVE    SEPARATOR    SET    
    SHOW    SMALLINT    SPATIAL    
    SPECIFIC    SQL    SQLEXCEPTION    
    SQLSTATE    SQLWARNING    SQL_BIG_RESULT    
    SQL_CALC_FOUND_ROWS    SQL_SMALL_RESULT    SSL    
    STARTING    STRAIGHT_JOIN    TABLE    
    TERMINATED    THEN    TINYBLOB    
    TINYINT    TINYTEXT    TO    
    TRAILING    TRIGGER    TRUE    
    UNDO    UNION    UNIQUE    
    UNLOCK    UNSIGNED    UPDATE    
    USAGE    USE    USING    
    UTC_DATE    UTC_TIME    UTC_TIMESTAMP    
    VALUES    VARBINARY    VARCHAR    
    VARCHARACTER    VARYING    WHEN    
    WHERE    WHILE    WITH    
    WRITE    XOR    YEAR_MONTH    
    ZEROFILL                    
      

类似问题 »