我收到错误消息:


  #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)


我删除了一些信息,但这无关紧要。无论如何,这是phpmyadmin中plans.plan_id列的屏幕截图:



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

编辑:所以我似乎一直都在遇到这个问题。我知道它与线路有关,但不知道为什么会发生。这是我要比较两个*变量的地方。有什么想法吗?

最佳答案

您正在更新表kaseamgc_store.store_players,并期望表kaseamgc_store.plansplan_id)的列。

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


那行不通。正确的解决方案取决于您的实际需求。预先分配给局部变量可能是一个解决方案。

关于mysql - {MySQL}错误#1054 SQL似乎正常(触发),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29679952/

10-14 04:03