【发布时间】:2021-11-08 01:49:36
【问题描述】:
我在本地 xampp 环境中有 MariaDB 10.4.17。在我的生产环境中,我有 MySQL 5.7.28。由于查询不起作用,我尝试使用 MariaDB 10.3.31 的另一台服务器,认为它在生产版本中不起作用,因为服务器类型是“MySQL”
我转储了整个数据库并将其导入两台服务器,并在所有三台服务器上运行完全相同的查询。此外,我将相同的转储文件导入到本地主机,使另一个数据库认为在导出数据库时可能会出现问题。但该查询在该本地数据库上也能完美运行。
我现在对此一无所知。一些帮助将不胜感激。
下面是我正在尝试的查询。
SELECT
COUNT(*) AS AGGREGATE
FROM
`ps_servers`
WHERE
(
(`created_by` = 4) OR(
created_by IN(
SELECT
id
FROM
users
WHERE
parent_id = 4
UNION
SELECT
U.id
FROM
users U
LEFT JOIN users T ON
U.parent_id = T.id
) AND server_type = 'PUBLIC' OR server_type = 'PRIVATE'
) OR(
created_by IN(
(
SELECT
parent_id
FROM
users
WHERE
id = 4
UNION
SELECT
T.parent_id
FROM
users U
LEFT JOIN users T ON
U.parent_id = T.id
WHERE
U.id = 4
)
UNION
(
SELECT
A.parent_id
FROM
users U
LEFT JOIN users T ON
U.parent_id = T.id
LEFT JOIN users A ON
T.parent_id = A.id
WHERE
U.id = 4
)
) AND server_type = 'PUBLIC'
)
) AND `server_type` = 'PUBLIC' AND `status` <> 'DELETED'
我在 MYSQL 服务器中遇到的错误是这样的
#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法使用 靠近'UNION ( 选择 A.parent_id ' 在第 42 行
我在 Maria DB 中遇到的错误是
#1064 - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以了解要使用的正确语法 靠近'UNION ( 选择 A.parent_id ...' 在第 42 行
【问题讨论】:
-
“查询无效”是什么意思?如果您有错误,请在此处发布。如果数据有误,请在此处发布测试数据minimal reproducible example
-
@SlavaRozhnev,您好,抱歉,我忘了添加错误。现在我更新了这个问题。谢谢
-
开发和生产中最好使用同品牌同版本的数据库软件,避免出现这样的兼容性意外。 MySQL 和 MariaDB 大约在 2010 年有一个共同的起源,但从那时起它们都发生了重大变化,不应再被认为是兼容的。
标签: php mysql sql database mariadb