【问题标题】:SQL Error #1064 with Begin Statement带有 Begin 语句的 SQL 错误 #1064
【发布时间】:2015-07-04 03:21:30
【问题描述】:

SQL

BEGIN
  UPDATE gcm_users SET gcm_regid="fff" WHERE user_id=8;

  IF sql%rowcount = 0 THEN
      INSERT INTO gcm_users (gcm_regid, user_id) VALUES ("dsdtrytujytetgeryrtyh", "8");
  END IF;
END;

错误:#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的 'UPDATE gcm_users SET gcm_regid="dsdtrytujytetgeryrtyh" WHERE user_id=8' 附近使用正确的语法

编辑:

------------------------------------------------------------
| Id  | user_id | gcm_regid | created_at          | Status |
------------------------------------------------------------
|   1 | 22      | ********* | 2015-04-25 13:13:39 |   1    |
|   2 | 33      | ********* | 2015-04-25 13:13:39 |   1    |
|   3 | 13      | ********* | 2015-04-25 13:13:39 |   1    |
|   4 | 12      | ********* | 2015-04-25 13:13:39 |   1    |
|   5 | 67      | ********* | 2015-04-25 13:13:39 |   1    |
|   6 | 65      | ********* | 2015-04-25 13:13:39 |   1    |
------------------------------------------------------------

有人可以帮我解决这个错误吗?

【问题讨论】:

  • gcm_users 的架构好吗?
  • 这是完整的 SQL 还是您在此 BEGIN/END 之外执行其他任何操作?
  • @xboxremote 没有别的
  • @alagu:我不确定,但没有分隔符?喜欢DELIMITER ;; BEGIN your code here END;;
  • 这就是我想知道的。但我认为不需要它,除非他在 BEGIN/END 块之外有更多语句。但这可能值得一试?

标签: mysql sql mysql-error-1064


【解决方案1】:

SQL 中的字符串文字用单引号 (') 表示,而不是双引号 ("):

begin
  UPDATE gcm_users SET gcm_regid='fff' WHERE user_id=8;

  if sql%rowcount = 0 then
      INSERT INTO gcm_users (gcm_users, user_id) 
      VALUES ('dsdtrytujytetgeryrtyh', 8);
  end if;
end;

【讨论】:

  • 感谢您的宝贵时间,但我仍然遇到同样的错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多