MySQL 语法错误:You have an error in your SQL syntax - `goods` 表创建语句修正
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 语法错误通常出现在创建表语句中,常见原因是:
- 字段定义错误,比如数据类型错误、字符集设置错误等;
- 约束错误,比如主键、外键定义错误等;
- 索引定义错误,比如索引名称重复、索引类型错误等;
- 引擎和字符集设置错误等。
修正后的 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 官方文档或者在线参考手册来进行语法检查。
希望本文档对你有所帮助!
原文地址: https://www.cveoy.top/t/topic/oWva 著作权归作者所有。请勿转载和采集!