更改表修改列查询结果出现 SQL 语法错误 1064

问题描述 投票:0回答:2

我收到此错误:

异常“PDOException”,消息“SQLSTATE[42000]: 语法错误或访问冲突:1064 您的 SQL 语法有错误; 检查与您的MySQL服务器版本对应的手册以获取正确的信息 附近使用的语法 '(

sfname2
VARCHAR(255) NOT NULL ,
slname2
VARCHAR(255) NOT NULL , ' 在第 2 行'

当我尝试运行此查询时:

$stmnt = $db->prepare('ALTER TABLE eventfields MODIFY  
                       (sfname2 VARCHAR(255) NOT NULL ,
                       slname2 VARCHAR(255) NOT NULL ,
                       ....
                       customfield1 VARCHAR(255) NOT NULL ,)');

为什么?

php mysql sql pdo
2个回答
1
投票

去掉列周围的括号,您需要

MODIFY COLUMN
来更改每列。

$stmnt = $db->prepare('ALTER TABLE eventfields   
                   MODIFY COLUMN sfname2 VARCHAR(255) NOT NULL ,
                   MODIFY COLUMN slname2 VARCHAR(255) NOT NULL ,
                   ....
                   MODIFY COLUMN customfield1 VARCHAR(255) NOT NULL ');

0
投票

MySQL 升级后,我在 MODIFY COLUMN 上遇到了同样的错误。原来我的表/列名是新添加的 MySQL 保留字,所以我只需添加反引号即可:

ALTER TABLE `groups` MODIFY COLUMN `description` TEXT

我意识到这与OP不完全相同,但我最初认为它与MODIFY COLUMN有关,这是我发现的第一个SO匹配。

© www.soinside.com 2019 - 2024. All rights reserved.