【问题标题】:Alter table modify column query results in SQL Syntax error 1064Alter table modify column查询导致SQL语法错误1064
【发布时间】:2014-02-24 20:23:09
【问题描述】:

我收到此错误:

带有消息“SQLSTATE[42000]”的异常“PDOException”: 语法错误或访问冲突: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


    【解决方案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 ');
    

    【讨论】:

    • 哦。我仍然收到错误消息。现在它靠近'slname2 VARCHAR(255) NOT NULL , school2 VARCHAR(255) NOT NULL , gr' at line 3'
    • 好的。是否可以在一个查询中执行 NOT NULL DEFAULT 'something' 或者是否必须在另一个查询中设置默认值?
    • 所以现在我在(65): PDOStatement->execute()上得到SQLSTATE[HY000]: General error: 2030 This command is not supported in the prepared statement protocol yet
    • 不得不做 $db->e​​xec(..) 而不是准备。
    猜你喜欢
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-21
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多