更改varchar列时出错#1064

时间:2016-03-15 15:05:17

标签: mysql phpmyadmin

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

  

#1064 - 您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以便在' = latin1之前使用正确的语法.COLLATE latin1_swedish_ci NOT NULL'在第1行

phpmyadmin自动生成的SQL:

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

3 个答案:

答案 0 :(得分:0)

使用以下查询仅更改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

答案 1 :(得分:0)

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]

答案 2 :(得分:0)

be a bug似乎已为phpMyAdmin 4.5.4修复了此问题。我建议你更新你的phpMyAdmin(注意4.6.0将在未来几天内发布)以利用这个和其他修复。