【问题标题】:{MySQL} Error #1054 SQL seems fine(Trigger){MySQL} 错误 #1054 SQL 似乎很好(触发器)
【发布时间】:2015-04-16 15:53:45
【问题描述】:

我收到错误消息:

#1054 - 'where 子句'中的未知列 'kaseamgc_store.plans.plan_id'

这条消息来自我的触发器,它是一个插入前触发器。它运行以下 SQL:

UPDATE kaseamgc_store.store_players
   SET credits = credits + kaseamgc_store.plans.creditvalue 
 WHERE kaseamgc_store.plans.plan_id = kaseamgc_store.orders.plan_id
   AND kaseamgc_store.store_players.authid LIKE '%kaseamgc_store.orders.steam_id'

现在我在收到消息时运行了以下 SQL(可能无关紧要):

INSERT INTO finish_order (txn_id, payer_email, mc_gross, steam_id, username,
                           password, date, provider, plan_id, forum_userid)
     VALUES ('info', 'email-adress', '1.00', 'STEAM_ID', 'TheUsername',
             'no-pass', 20150416, 'paypal', 1, 0)

我已经删除了一些信息,但这无关紧要。无论如何,这里有一些关于列 plans.plan_id 在 phpmyadmin 中的截图:

我有 4 行,所以我应该在 plans.plan_id 中有 1-4 行

编辑:所以我似乎遇到了这个问题。我知道这与台词有关,但不知道为什么会这样。这是我想比较两个*变量的地方。有什么想法吗?

【问题讨论】:

  • 很难判断您是否有问题,或者您是否解决了任何问题。此外,您只需要标记那些相关的 DBMS。你用的是sql server还是mysql?它们不是一回事。
  • 将触发器的完整代码添加到问题中。
  • @SeanLange 我还没有解决它,抱歉我不清楚。使用mysql服务器,不知道它们不一样。
  • @AbhikChakraborty 这是完整的触发器,缺少什么?除了 ;因为你不需要在 phpmyadmin 中拥有它

标签: mysql mysql-error-1054


【解决方案1】:

您正在更新表 kaseamgc_store.store_players 并期望有一列表 kaseamgc_store.plans (plan_id)。

UPDATE kaseamgc_store.store_players -- table store_players
   SET ...
 WHERE kaseamgc_store.plans.plan_id .... -- table plans

那是行不通的。正确的解决方案取决于您到底需要什么。之前对局部变量的赋值可能是一个解决方案。

【讨论】:

    猜你喜欢
    • 2017-04-07
    • 2021-02-27
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多