我收到此错误:
异常“PDOException”,消息“SQLSTATE[42000]: 语法错误或访问冲突:1064 您的 SQL 语法有错误; 检查与您的MySQL服务器版本对应的手册以获取正确的信息 附近使用的语法 '(
VARCHAR(255) NOT NULL ,sfname2
VARCHAR(255) NOT NULL , ' 在第 2 行'slname2
当我尝试运行此查询时:
$stmnt = $db->prepare('ALTER TABLE eventfields MODIFY
(sfname2 VARCHAR(255) NOT NULL ,
slname2 VARCHAR(255) NOT NULL ,
....
customfield1 VARCHAR(255) NOT NULL ,)');
为什么?
去掉列周围的括号,您需要
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 ');
MySQL 升级后,我在 MODIFY COLUMN 上遇到了同样的错误。原来我的表/列名是新添加的 MySQL 保留字,所以我只需添加反引号即可:
ALTER TABLE `groups` MODIFY COLUMN `description` TEXT
我意识到这与OP不完全相同,但我最初认为它与MODIFY COLUMN有关,这是我发现的第一个SO匹配。