在 MySQL 8.0 中更改命令显示语法错误

Bri*_*Roy 0 mysql alter-table mysql-8.0

下面是我的表架构

create table employee(
emp_id numeric(4),
fname varchar(10),
lname varchar(10),
mgr_id numeric(4),
hire_date date,
job_id numeric(2),
dept_id numeric(3)
);
Run Code Online (Sandbox Code Playgroud)

现在我想使用ALTER Table命令 withAlter Column而不是Modify这里 在此输入图像描述

以下是我的命令:-

ALTER TABLE employee ALTER COLUMN dept_id int(8);

但我收到一条错误,指出语法错误:-

ERROR 1064 (42000): 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 'int(8)' at line 1
Run Code Online (Sandbox Code Playgroud)

现在,如果我使用Modify它可以工作,那么为什么 ALTER COLUMN 不起作用。根据官方文档,该命令是正确的。我正在使用 MySQL 8.0 。

Erg*_*sha 6

看来您对手册有误解。

从您提到的链接中,语法更改列用于:

ALTER [COLUMN] col_name {
        SET DEFAULT {literal | (expr)}
      | SET {VISIBLE | INVISIBLE}
      | DROP DEFAULT
    }
Run Code Online (Sandbox Code Playgroud)

以下命令将正常工作。

ALTER TABLE employee ALTER COLUMN dept_id set default 111;
Run Code Online (Sandbox Code Playgroud)

根据数据类型的更改,您必须使用 MODIFY COLUMN 或 CHANGE COLUMN

ALTER TABLE employee MODIFY COLUMN dept_id  int(8);
ALTER TABLE employee CHANGE dept_id dept_id  int(8);
Run Code Online (Sandbox Code Playgroud)

ALTER TABLE 语句

例子