在开始新的更改操作之前缺少逗号。(靠近“字符集”)

Missing comma before start of a new alter operation. (near "CHARACTER SET")

提问人:Mohsin Raza 提问时间:7/26/2019 最后编辑:CommunityMohsin Raza 更新时间:9/30/2023 访问量:12439

问:

MySQL的 - phpmyadmin

这个查询有什么问题?

ALTER TABLE `invoices` 
CHANGE `status` `status` ENUM('paid','due','canceled','partial','cheque') 
CHARACTER SET `utf8` COLLATE `utf8_general_ci` NOT NULL DEFAULT `due`;

我收到此错误:

在开始新的更改操作之前缺少逗号。(靠近“字符集”)并且无法在实时服务器上运行此查询。当我在开发过程中更改本地主机上的表结构时,会生成查询。

我还尝试了许多线程中提到的以下查询,但它也给出了相同的上述错误:

ALTER TABLE `invoices` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

mysql sql 数据库 phpmyadmin

评论

1赞 PM 77-1 7/26/2019
尝试DEFAULT 'String'
0赞 Mohsin Raza 7/26/2019
你能写出完整的查询吗,请@PM77-1
1赞 Solarflare 7/26/2019
这不是 mysql 错误消息。也许直接在 mysql 客户端中运行查询。另外,PM 的意思是:你使用了错误的引号,“”而不是 ìn(它与这个问题无关,但一旦你解决了它,你就会得到它)。''DEFAULT `due`

答:

0赞 steven7mwesigwa 8/29/2019 #1

我不知道为什么。我也面临同样的问题。

虽然它看起来像:

当从 SQL 中删除 CHARACTER 和 COLLATE 部分时,解析器工作正常。

以前

ALTER TABLE `place` CHANGE COLUMN `plc_location_type` `gplc_location_type` ENUM('LOCATION') CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL;

ALTER TABLE `place` CHANGE COLUMN `plc_location_type` `gplc_location_type` ENUM('LOCATION') NOT NULL;

参考资料:
https://github.com/phpmyadmin/sql-parser/issues/229

祝你好运!

0赞 AshishGoli 5/2/2022 #2
ALTER TABLE table_name 
CHANGE old_column_name1 new_col_name1 Data Type,
CHANGE old_column_name2 new_col_name2 Data Type,
CHANGE old_column_name3 new_col_name3 Data Type;

评论

3赞 Joseph 5/3/2022
你需要在你的答案中添加一些解释