我的任务是重振这一旧版软件。 它曾经运行在一个旧的服务器上(2012年),它已经死去了丑陋的方式(硬盘故障)。 在此服务器死亡之前,代码正常工作。这个查询应该做什么? (为什么它会失败?)
我已经从备份中重建了MySQL数据库和数据。
但是,一个查询不起作用,并失败,出现错误:Query preparation failed: Unknown column '_operationId' in 'where clause'
。有问题的查询是:
SELECT
@r AS _operationId
, @r := (
SELECT
operationId
FROM operations
WHERE operationId = _operationId
) AS includesOperationId
FROM (SELECT @r := %i) AS tmp
INNER JOIN operations
WHERE @r > 0 AND @r IS NOT NULL
从我所了解的情况来看,查询试图重新连接到自己建立某种树?
由于某种原因,此查询必须适用于以前版本的MySQL(5.0 ??),但使用当前版本(MySQL 5.7),查询失败。
有什么“MySQL的语者”在那里谁可以给我解释一下:
- 什么查询试图做什么?
- 为什么它在一些以前的版本,但不再是?
- 如何更改查询以使其重新工作?
感谢提前一百万。
更新:
的operations
表定义和数据:
+-------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+---------+----------------+
| operationId | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| operation | varchar(40) | NO | UNI | NULL | |
| description | text | YES | | NULL | |
+-------------+---------------------+------+-----+---------+----------------+
+-------------+-----------+-------------+
| operationId | operation | description |
+-------------+-----------+-------------+
| 1 | add | NULL |
| 2 | delete | NULL |
| 3 | edit | NULL |
| 4 | view | NULL |
| 5 | disable | NULL |
| 6 | execute | NULL |
+-------------+-----------+-------------+
我是一个SQL Server的人,所以可能无法帮助,但是如果您提供一些示例数据,也许是表模式,那对于那些专业的MySQL来说,了解到底是怎么回事。 – 2016-02-26 22:19:16
我怀疑这个查询是否适用于任何版本,因为它是。 – Mihai
你的代码表明'_operationid'也是环境中的一个变量。在同一个查询中使用会话变量(使用'@'和过程变量)确实很奇怪。 –