首页 > 解决方案 > 1064 您的 SQL 语法有错误

问题描述

自从使用新的 MYSQL 版本 8.0.18 以来,我遇到了一个问题。总是得到相同的错误信息:

SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 'function) VALUES (?,?,?,?,?) 附近使用的正确语法

DROP TABLE IF EXISTS bugtracker1_product_status;
CREATE TABLE bugtracker1_product_status (
    statusID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    productID INT(10),
    statusTitle VARCHAR(255) NOT NULL DEFAULT '',
    type ENUM('bug','suggestion') NOT NULL DEFAULT 'bug',
    function ENUM('duplicate','solved','outstanding') NOT NULL DEFAULT 'outstanding',
    cssClassName VARCHAR(255) NOT NULL DEFAULT '',
    showOrder INT(10) NOT NULL DEFAULT 0,
    KEY (productID)
);

问题出在哪里?

function ENUM('duplicate','solved','outstanding') NOT NULL DEFAULT 'outstanding',

它在 MariaDB 中工作

谢谢你的帮助!

感谢您的支持,但不幸的是,这不会导致成功。错误仍然存​​在。

`function` ENUM('duplicate','solved','outstanding') NOT NULL DEFAULT 'outstanding',

无法准备语句“INSERT INTO bugtracker1_product_status (productID, statusTitle, cssClassName, type, function) VALUES (?,?,?,?,?)”

没有其他选择吗?功能(R);在 8.0.1 中被保留

标签: mysql

解决方案


function是 MySQL 中的保留关键字。你需要用反引号来逃避它:

 `function` ENUM...

MySQL 文档声明它在版本 8.0.1 中被保留


推荐阅读