代码之家  ›  专栏  ›  技术社区  ›  levaa

中断的INSERT语句

  •  0
  • levaa  · 技术社区  · 6 年前

    这个插入语句有什么问题?我看了好几遍,都看不出有什么问题。

    INSERT INTO tasks
           (task_id, priority, limit, total_active, time_limit, start_time, params)
    VALUES ("d", "9", "1", "0", "1549699912", "1549696366", "");
    
    +--------------+------------+------+-----+---------+----------------+
    | Field        | Type       | Null | Key | Default | Extra          |
    +--------------+------------+------+-----+---------+----------------+
    | id           | int(11)    | NO   | PRI | NULL    | auto_increment |
    | task_id      | varchar(2) | NO   |     | NULL    |                |
    | priority     | tinyint(1) | NO   |     | 0       |                |
    | limit        | int(11)    | NO   |     | NULL    |                |
    | total_active | int(11)    | NO   |     | NULL    |                |
    | time_limit   | int(11)    | NO   |     | NULL    |                |
    | start_time   | int(11)    | NO   |     | NULL    |                |
    | params       | tinytext   | YES  |     | NULL    |                |
    +--------------+------------+------+-----+---------+----------------+
    

    错误1064(42000):您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以获得使用near'的正确语法。 limit, total_active, time_limit, start_time, params) VALUES ("1", "d", "9", "1", 在第1行

    3 回复  |  直到 6 年前
        1
  •  2
  •   Matthias Burger    6 年前

    LIMIT 是SQL中的关键字,需要添加双引号。

    INSERT INTO tasks(task_id, priority, "limit", total_active, time_limit, 
        start_time, params) VALUES ("d", "9", "1", "0", "1549699912", "1549696366", "");
    

    编辑:如果这不起作用,可以使用反勾号进行转义:

    INSERT INTO tasks(task_id, priority, `limit`, total_active, time_limit, 
        start_time, params) VALUES ("d", "9", "1", "0", "1549699912", "1549696366", "");
    
        2
  •  0
  •   Jim Macaulay    6 年前

    优先级列默认为0。您可以在插入中跳过它。 试试这个。

     INSERT INTO tasks( task_id, limit, total_active, time_limit, start_time, params) VALUES 
    ( 'd',  1, 0, 1549699912, 1549696366, null);
    

    谢谢你

        3
  •  0
  •   ScaisEdge    6 年前

    不要将引号用于数字

    INSERT INTO tasks(task_id, priority, `limit`, total_active, time_limit, start_time, params) 
    VALUES ("d", 9, 1, 0, 1549699912, 1549696366, "");
    

    请小心,因为问题中的错误消息与显示的代码不对应。您收到错误消息

     VALUES ("1", "d", "9", 
    

    但在代码中你有不同的价值

     VALUES ("d",  ...
    

    如Matthias Burger Wrap所建议的,保留了backtics单词。

    插入到任务中(任务ID、优先级、“限制”、活动总数、时间限制、开始时间、参数)
    值(“D”,9,1,0,1549699912,1549696366,“”);