更改 varchar 列时出现错误 #1064

Error #1064 when altering varchar column

我正在使用 phpmyadmin,当我尝试将 table 的列 description 从 varchar(1000) 更改为 varchar(2000) 时,出现错误:

#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 '=latin1 COLLATE latin1_swedish_ci NOT NULL' at line 1

phpmyadmin自动生成的SQL:

ALTER TABLE `showcase` 
CHANGE `description` `description` VARCHAR(2000) CHARSET=latin1 
COLLATE latin1_swedish_ci NOT NULL;

使用以下查询仅更改 VARCHAR 的长度:

ALTER TABLE `showcase` MODIFY `description` VARCHAR(2000);

如果你也想设置字符集,你可以使用下面的查询(你的ALTER命令作为有效命令):

ALTER TABLE `showcase` 
CHANGE `description` `description` VARCHAR(2000) CHARACTER SET latin1 
COLLATE latin1_swedish_ci NOT NULL

ALTER TABLE 语句不正确。 CHARSETCOLLATE 不能放入列定义中。

参考:

http://dev.mysql.com/doc/refman/5.7/en/alter-table.html http://dev.mysql.com/doc/refman/5.7/en/create-table.html

column_definition:
    data_type [NOT NULL | NULL] [DEFAULT default_value]
      [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
      [COMMENT 'string']
      [COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
      [STORAGE {DISK|MEMORY|DEFAULT}]
      [reference_definition]
  | data_type [GENERATED ALWAYS] AS (expression)
      [VIRTUAL | STORED] [UNIQUE [KEY]] [COMMENT comment]
      [NOT NULL | NULL] [[PRIMARY] KEY]

这在 be a bug 看来已针对 phpMyAdmin 4.5.4 修复。我建议您更新 phpMyAdmin(注意 4.6.0 将在接下来的几天内发布)以利用此修复和其他修复。