MariaDB 대 Mysql 쿼리 문제
최근 데이터베이스 시스템을 MySql에서 MariaDB로 변경했는데 한가지 쿼리에 문제가 있습니다.
SELECT
(SELECT
IFNULL(label, '') FROM (
SELECT
( SELECT label FROM llx_categorie WHERE rowid = @r And type = 0 ) AS label,
@r As r,
( Select @r := fk_parent FROM llx_categorie WHERE rowid = r And type = 0 ) As parent,
@l := @l - 1 As lvl
FROM( SELECT @r := 732, @l := 5, @cl := 0 ) vars,
llx_categorie h
Where (@l > 0) And type = 0 And @r > 0 And label IS NOT NULL
ORDER BY parent ASC
) as t1
LIMIT 0,1 ) as catlevel1,
(SELECT
IFNULL(label, '') FROM (
SELECT
( SELECT label FROM llx_categorie WHERE rowid = @r And type = 0 ) AS label,
@r As r,
( Select @r := fk_parent FROM llx_categorie WHERE rowid = r And type = 0 ) As parent,
@l := @l - 1 As lvl
FROM( SELECT @r := 732, @l := 5, @cl := 0 ) vars,
llx_categorie h
Where (@l > 0) And type = 0 And @r > 0 And label IS NOT NULL
ORDER BY parent ASC
) as t1
LIMIT 1,1 ) as catlevel2
카테고리 ID @r732에서 부모 카테고리를 가져오는 간단한 쿼리일 뿐입니다.
MySql에서 이를 실행하면 예상대로 반환됩니다.
+----------------------+--------------+
| catlevel1 | catlevel2 |
+----------------------+--------------+
| Todas las categorías | Sonido-Audio |
+----------------------+--------------+
그러나 MariaDB에서는 이를 반환합니다.
+----------------------+--------------+
| catlevel1 | catlevel2 |
+----------------------+--------------+
| Todas las categorías | NULL |
+----------------------+--------------+
그게 어떻게 가능한지 아는 사람?아니면 가능한 해결책?서버에 구성을 사용하도록 설정하지 않으셨습니까?미치겠어요.
미리 감사드립니다.
문제는 다음과 같은 것에서 비롯된다고 생각합니다.
다음과 같은 서브쿼리가 주어졌습니다.ORDER BY
그리고 외부 쿼리는 없는 상태입니다.ORDER BY
...
이전 MySQL에서는 내부 순서가 outer'에서 여전히 유효했습니다.SELECT'.
MariaDB에서는 지정되지 않은 외부 주문은 예측할 수 없습니다.
가능한 해결책:이동ORDER BY parent ASC
한 단계 밖으로
가능한 또 다른 솔루션(MariaDB용):테이블 구조에 따라 optimizer_switch='derived_switch=off'(또는 optimizer_switch='derived_switch=off, derived_with_keys=off')를 설정합니다.참고.
당신이 고양이 레벨 1은 맞았지만 고양이 레벨 2는 맞지 않은 것은 우연의 일치라고 생각합니다.
또한, 제거.llx_categorie h
사용하지 않을 경우.
첫째, 이는 사실이 아닙니다.
단순한 질문일 뿐입니다
;)
두번째로, 이것에 대한 조사를 좀 한 후에, 나는 내 SQL이나 MariaDB를 조회할 때 상당히 많은 다른 결과가 있다는 것을 알게 되었지만, 그것들의 대부분은 다음과 연결되어 있는 것 같습니다.ORDER BY
그리고.GROUP BY
. 일부에서는 mariaDB가 signed 및 unsigned Types에 대해 더 엄격한(=ANSI를 더 준수함) 것을 정교하게 지적하기도 했습니다.이것이 올바른 방향으로 가는 데 도움이 될 수도 있습니다.
이 문제에 대한 해결책을 모르겠습니다.
언급URL : https://stackoverflow.com/questions/34069764/mariadb-vs-mysql-query-trouble
'programing' 카테고리의 다른 글
NETWORK_ERROR: XMLHttpRequest 예외 101 (0) | 2023.09.07 |
---|---|
다른 도메인으로 전환하고 사용자를 얻는 방법 (0) | 2023.09.07 |
멀티파트예외:현재 요청이 다중 부품 요청이 아닙니다. (0) | 2023.09.07 |
Angular 2에서 페이지에 페이지를 다시 로드하는 방법은 무엇입니까? (0) | 2023.09.07 |
명령줄을 통해 변수를 파워셸 스크립트로 전달 (0) | 2023.09.07 |