【发布时间】:2017-01-26 19:46:17
【问题描述】:
这行代码是 phpmyadmin 自动生成的(可能是我公司网站上运行的旧版本,但我现在不想处理):
ALTER TABLE `lc_error_logs` CHANGE `OneDetailedMessage` `OneDetailedMessage` VARCHAR(5000) CHARSET=latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL;
尝试执行该 SQL 时,通过 phpmyadmin 获取错误消息:
查询错误: #1064 - 您的 SQL 语法有错误;检查与您的 MYSQL 服务器版本相对应的手册,在第 1 行的 '=latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL' 附近为用户找到正确的语法。
我看不出查询出了什么问题,我想知道问题出在哪里。
注意事项:
- 我所做的只是更改 VARCHAR 长度。
- 如果我删除该列,然后使用这些相同的设置重新创建它,则可以正常工作。只是那个 ALTER TABLE 语法有问题。
- 我可以更改同一个表中的 INT 列(例如 INT 到 SMALLINT),没有任何问题。关于 COLLATE 的东西?但这是我们在整个数据库中使用的整理。
- mysql 版本:“5.5.47-0ubuntu0.14.04.1”
- VARCHAR 长度使用什么值并不重要。我尝试更改什么并不重要(例如,更改列名有相同的错误。)而且我之前在其他表上遇到过这个问题。 如果我指定排序规则,我从未能够成功地更改此数据库中的 VARCHAR。 (尽管这是此数据库的默认排序规则,但在我未指定排序规则时会自动生成。)
【问题讨论】:
标签: mysql alter-table