【问题标题】:MySQL Query Syntax Error. Trying to create daily event but syntax error on simple queryMySQL 查询语法错误。尝试创建每日事件但简单查询的语法错误
【发布时间】:2023-04-04 13:50:01
【问题描述】:

我正在尝试创建一个永远在每天 00 HRS 执行的事件。我无法弄清楚我犯了什么语法错误。 我的代码:

delimiter |

CREATE EVENT IF NOT EXISTS schedule_updation
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_DATE()
DO
  ALTER TABLE `bookings` DROP COLUMN `Date1`;
  ALTER TABLE `bookings` CHANGE `Date2` `Date1` TEXT CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL;
  ALTER TABLE `bookings` CHANGE `Date3` `Date2` TEXT CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL;
  ALTER TABLE `bookings` CHANGE `Date4` `Date3` TEXT CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL;
  ALTER TABLE `bookings` CHANGE `Date5` `Date4` TEXT CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL;
  ALTER TABLE `bookings` CHANGE `Date6` `Date5` TEXT CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL;
  ALTER TABLE `bookings` ADD `Date6` TEXT after `Date5`;

  delimiter ;

错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ALTER TABLE `bookings` CHANGE `Date2` `Date1` TEXT CHARACTER SET latin1 COLLATE ' at line 6

数据库版本:

  • 服务器:本地数据库(127.0.0.1 通过 TCP/IP)
  • 服务器类型:MySQL
  • 服务器版本:5.7.11 - MySQL 社区服务器 (GPL)
  • 协议版本:10

【问题讨论】:

    标签: mysql


    【解决方案1】:

    虽然没有将列声明为 NOT NULL UNIQUE,但应该没有问题。 试试

    ALTER TABLE `bookings` CHANGE `Date2` `Date1` TEXT CHARACTER SET latin1 COLLATE latin1_swedish_ci DEFAULT NULL;
    

    ALTER TABLE `bookings` CHANGE `Date2` `Date1` TEXT CHARACTER SET latin1 COLLATE latin1_swedish_ci null default null;
    

    【讨论】:

    • 你一针见血,非常感谢。但是当我尝试将 Date2 更改为 Date1 时,它给了我一个重复的列错误,我现在只是为每个查询创建了不同的事件。不过再次感谢。
    【解决方案2】:

    一个事件DO 只能有一个“语句”作为它的主体。如果你想要多个语句,你需要有一个BEGIN/END 块;

    CREATE...
    DO single_statement;
    

    CREATE ...
    DO BEGIN
        statement1;
        statement2;
        ...
    END
    

    【讨论】:

    • 感谢 Marc B 的快速回复,但是当我使用 END 说“无法识别的语句类型(接近 END)”并且旁边有一个红十字时,它会出错。不过开始没有错误。
    • 是的,抱歉,应该是END |,因为您更改了分隔符。
    • 仍然出现错误,但我的整个活动还是有缺陷的,所以没关系。不过感谢您的帮助。 :)
    猜你喜欢
    • 2018-12-31
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 2015-09-01
    • 2012-02-21
    相关资源
    最近更新 更多