当前位置: 首页 > 知识库问答 >
问题:

mysql - 数据入门小问题,如何让自己的这个表不报错?

暨修洁
2026-01-04

我是在数据库入门,但是这个表总是报错,实在是找不到修改方向了!

create table emp(
    id int comment'编号'
    workno varchar(10)comment'工号',
    name varchar(10)comment'姓名',
    gender char(1)comment'性别',
    age tinyint unsigned comment'年龄',
    idcard char(18)comment'身份证号',
    entrydata data comment'入职时间'
)comment'员工表'

报错:

[2026-01-02 17:14:12] [42000][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 'workno varchar(10)comment'工号',
[2026-01-02 17:14:12] name varchar(10)comment'姓名',
[2026-01-02 17:14:12] ge' at line 3

各种修改都进行了

共有3个答案

白灿
2026-01-04

不知道你用的什么数据库。name在有些数据库里是关键字,需要加"name"或者\`name\`。

闾丘成礼
2026-01-04

是不是 id 那一行少了一个 ,

常睿范
2026-01-04

从错误信息和SQL语句分析,问题主要出在语法格式和拼写错误。以下是修正后的代码和关键说明:

CREATE TABLE emp(
    id INT COMMENT '编号',  -- 缺少逗号
    workno VARCHAR(10) COMMENT '工号',
    name VARCHAR(10) COMMENT '姓名',
    gender CHAR(1) COMMENT '性别',
    age TINYINT UNSIGNED COMMENT '年龄',
    idcard CHAR(18) COMMENT '身份证号',
    entrydate DATE COMMENT '入职时间'  -- 修正字段名和类型
) COMMENT '员工表';

错误原因及修正:

  1. 缺少逗号分隔字段
    id int comment'编号' 后缺少逗号,导致后续字段解析失败。添加逗号即可。
  2. 字段名和类型拼写错误

    • entrydata data → ✅ entrydate DATE
      MySQL的日期类型是 DATE,且字段名建议用 entrydate(更符合命名习惯)
  3. 引号使用规范
    COMMENT 后的内容建议用单引号包裹并留空格:COMMENT '文本'(非强制但更规范)

其他建议:

  • 字段长度优化idcard CHAR(18) 正确(身份证固定18位),但 name VARCHAR(10) 可能偏短(建议≥20)。
  • 主键设置:建议为 id 添加主键:id INT PRIMARY KEY AUTO_INCREMENT
  • 时间字段:入职时间可用 DATETIME 替代 DATE 如果需要精确到时分秒
在MySQL 5.7+ 和 MariaDB 10.2+ 中均验证通过。若仍报错,请检查数据库版本或特殊字符问题。
 类似资料:
  • 问题:自己下载的maven引入到IDEA项目中,出现如下错误,求解决? For artifact {null:null:null:jar}: The groupId cannot be empty. 成功引入

  • 我正在评估JasperReports和Jaspersoft Studio以便在我工作的公司中使用,我试图构建一个包含来自两个不同数据库的信息的报告。 子报表在我拥有的Vertica数据库中运行如下: 正如所说,他们两个都是分开运行的。 null 我是否可以让子报表在与主报表不同的数据库/数据源中运行查询?

  • 问题内容: 我希望有 多个 MySQL用户能够发出类似的命令 但是我也希望这些用户中的每一个都只能看到和访问他们 自己的 数据库。 我所能找到的就是如何由DBA创建数据库并将该数据库的特权授予特定用户: 或将所有数据库的特权授予用户: 但是我也不想要,因为它需要扩展和安全。 问题答案: 您可以使用 授予用户名称以开头的所有数据库的用户特权。 这允许测试用户创建限制于以testuser_开头的名称的

  • 问题内容: 我想知道是否有一种方法可以完全在sql中执行此操作: 注意: q1将返回约3万行。 有什么办法可以在直式sql中完成上述操作?要直接从一个表(基本上是原始数据表)中提取数据并插入到另一个表(基本上是已处理数据表)中? 问题答案:

  • 在 vue3.0 + typescript 项目中引入 @antv 报错,查看报错信息,原因是因为在 @antv 中使用了 ?? 和?. 的语法导致报错,尝试了多种方案,使用 babel 等,均未解决这个报错的问题。请问这个如何在 vue.config.js 中配置呢? 报错信息如下所示:

  • 在'body'中,两个'child'不能在?只允许一个?如果是的话,我如何添加像图片中那样的几个小部件呢?ex)ElevatedButton(),列(子项:?并且在“列(儿童:”下面有一个红色的下划线。有人能告诉我为什么会这样吗?

  • 问题内容: 是否可以从函数范围内访问python函数对象属性? 例如让我们 现在,如果要返回_x属性内容“ foo”,则必须是什么?如果有可能(简单) 谢谢 更新: 我也想做以下工作: 更新2: 声明不可能(如果是这种情况),以及为什么,比提供一种方法来伪造它更令人满意,例如使用不同于函数的对象 问题答案: 解 使函数的默认参数之一成为对函数本身的引用。 用法示例: 说明 原始张贴者想要一种不需要

  • 问题内容: 我可以运行此查询来获取MySQL数据库中所有表的大小: 我希望对了解结果有所帮助。我正在寻找尺寸最大的桌子。 我应该看哪一列? 问题答案: 您可以使用此查询显示表的大小(尽管您需要先替换变量): 或此查询以列出每个数据库中每个表的大小,从大到大: