MySQL 语法错误:You have an error in your SQL syntax 解决方法

本文档提供了一个常见的 MySQL 语法错误的解决方法,并展示了如何创建 goods 表,包括字段定义、约束、索引、引擎和字符集等。

错误信息:

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 '(0) NULL DEFAULT CURRENT_TIMESTAMP(0),
  `Gupdate_time` timestamp(0) NULL DEFAU' at line 11

错误原因:

MySQL 语法错误通常出现在创建表语句中,常见原因是:

  1. 字段定义错误,比如数据类型错误、字符集设置错误等;
  2. 约束错误,比如主键、外键定义错误等;
  3. 索引定义错误,比如索引名称重复、索引类型错误等;
  4. 引擎和字符集设置错误等。

修正后的 goods 表创建语句:

DROP TABLE IF EXISTS `goods`;
CREATE TABLE `goods`  (
  `Gid` int(0) NOT NULL AUTO_INCREMENT,
  `Sid` int(0) NULL DEFAULT NULL,
  `Gname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `Gbuyprice` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `Gsellprice` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `Gphoto` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `Gdescribe` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `Gaudit` enum('0','1') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0',
  `Gstatus` enum('0','1','2','3') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0',
  `Gtime` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP,
  `Gupdate_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `SELLusername` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  PRIMARY KEY (`Gid`) USING BTREE,
  INDEX `Sid`(`Sid`) USING BTREE,
  CONSTRAINT `Sid` FOREIGN KEY (`Sid`) REFERENCES `student` (`Sid`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 40 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

说明:

  • DROP TABLE IF EXISTS 语句用于在创建表之前删除同名表,避免创建表失败。
  • AUTO_INCREMENT 用于自动递增主键。
  • DEFAULT NULL 表示默认值为空。
  • CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci 表示使用 utf8mb4 字符集和 general_ci 校对规则。
  • CURRENT_TIMESTAMP 用于获取当前时间戳。
  • ON UPDATE CURRENT_TIMESTAMP 表示在更新数据时自动更新时间戳。
  • PRIMARY KEY 用于定义主键。
  • INDEX 用于定义索引。
  • FOREIGN KEY 用于定义外键,关联 student 表的 Sid 字段。
  • ENGINE = InnoDB 表示使用 InnoDB 引擎。
  • ROW_FORMAT = Dynamic 表示使用动态行格式。

总结:

解决 MySQL 语法错误的关键在于仔细检查创建表语句,确保字段定义、约束、索引、引擎和字符集等设置正确。建议使用 MySQL 官方文档或者在线参考手册来进行语法检查。

希望本文档对你有所帮助!

MySQL 语法错误:You have an error in your SQL syntax  -  `goods` 表创建语句修正

原文地址: https://www.cveoy.top/t/topic/oWva 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录