반응형 MySQL38 [Error] with is not valid at this position for this server version Mysql 에서 WITH 절을 사용하다가 아래와 같은 에러가 발생하였다.(with 절 관련해서는 아래 참고 포스팅 참고) with is not valid at this position for this server version 필자는 피시에 mysql 5.7.44 버전이 설치 되어있지만 WITH 절은 8.0 부터 사용이 가능하여사용할 수 없는 구문이라는 에러이다. 해결책 1. 버전을 8.0 이상으로 올린다.2. WITH 절을 서브쿼리로 푼다. 그밖에도 코딩을 하고 있다면 코드 상에서 풀거나 할 방법은 다양하다.참고 포스팅https://thenicesj.tistory.com/1104 [Mysql] WITH 절 구문Mysql 에서 사용 가능한 WITH 절은 서브쿼리/가상테이블 을 미리 생성해두고, 언제든지 .. 2024. 11. 5. [Mysql] WITH 절 구문 Mysql 에서 사용 가능한 WITH 절은 서브쿼리/가상테이블 을 미리 생성해두고, 언제든지 재사용이 가능한 공통 테이블 표현식(CTE, Common Table Expression) 을 정의하는 방법이다. 가독성도 높이고 재사용성도 높이기에 WITH 절은 많이 사용이 된다. 우선 아래와 같은 쿼리가 있다고 가정하면SELECT SUM(MONEY)FROM ( SELECT ID, MONEY FROM TABLE_NAME WHERE ID > 10 ) AS A ; 위 쿼리를 WITH 절을 사용하면 아래와 같이 변경이 가능하다. WITH SUB_TABLE AS( .. 2024. 11. 2. [Mysql] ROWNUM 사용 Oracle이나 Mysql 등의 DBMS 에서 순번을 설정하기 위해 Rownum 을 종종 쓰곤 한다. Mysql 에서 Rownum을 사용하기 위해서 쿼리를 짰었는데,다른 Mysql 에서 사용해보니 syntax 에러가 발생하였다. 둘의 차이는 버전이 달랐다.Mysql 5.x 버전과 Mysql 8.x 였다. 버전별로 Rownum 사용하는 예시 코드를 작성한다.mysql 5.xSELECT @rownum := @rownum + 1 AS NUM, NAMEFROM TABLEA, (SELECT @rownum := 0) rWHERE 1=1ORDER BY REGISTER_TIME DESC;mysql 8.xSELECT ROW_NUMBER() OVER (ORDER BY.. 2024. 10. 10. [Mysql] [Error] ERROR 1426: Too-big precision 10 specified for 'column'. Maximum is 6. create table 문법으로 mysql 에서 table을 생성하다가 제목과 같은 에러를 만났다. ERROR 1426: Too-big precision 10 specified for 'column'. Maximum is 6. 쿼리는 아래와 같다. create table Table (..column Timestamp(10).. 에러 내용은 timestamp는 maximum 6 까지만 지정할수 있다는 의미이다. 해결법 timestamp 는 micro second 를 지원하지 않으므로 반올림 되어 6자리 까지만 가능하도록 설정해야한다.(버전에 따라 상이할수는 있음)Varchar(10) 으로 할 경우엔 텍스트 자체가 10자리 이지만 timestamp 에서의 괄호 안의 숫자는 소수점을 의미하는 내용이라서 max.. 2024. 10. 8. [Mysql] can't create test file lower-test Mysql 실행을 하려고 하는데 아래와 같은 에러가 발생하였다. Can't create test file xxx.lower-test 원인Mysql 의 기본 저장 위치는 /var 아래 위치해야 하나 그 이외의 (/home 등에 잡고 심볼릭 링크도 포함) 위치로 설정할 경우에 문제 발생 해결 방법vi /usr/lib/systemd/system/mariadb.service (버전에 따라 mysql.service 일수도 있음) ProtectHome=true를 false 로 변경 그리고 재시작systemctl daemon-reloadsystemctl start mysql 하지만 위와 같이 하면 다음 업데이트에서 동일 현상이 나타나므로 영구적으로 해결 하려면 아래 부분을 실행systemctl edit mariad.. 2024. 10. 4. [Mysql] Workbench 에서 ERD 그리기 Mysql 을 사용한다면 Workbench 를 사용하는 사람이 꽤 많을 것이다. Workbench 의 기능중 자동으로 ERD를 그려주는 기능이 있어서 정리한다. 우선 아래 사진과 같이 Database> Reverse Engineer 탭을 들어간다. 그럼 아래와 같이 뜨는데,설정값을 입력하고 다음다음 넘어가면서 설정을 한다. 그리고 어떤 Database를 그릴지 선택도 하고 나면 ERD가 그려진 화면을 만날수 있다.모두 완료가 되면 아래 사진과 같이 보이게 된다. 참고로 저장된 확장자는 mwb 인데Mysql WorkBench 파일의 약자이다. 2024. 7. 17. [Mysql] sql_mode=only_full_group_by Mysql 을 사용중인데 아래와 같은 에러가 발생했다. this is incompatible with sql_mode=only_full_group_by 찾던 중에 mysql 공식 홈페이지에서 이와 같은 글을 발견했다. https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html MySQL :: MySQL 5.7 Reference Manual :: 12.19.3 MySQL Handling of GROUP BY 12.19.3 MySQL Handling of GROUP BY SQL-92 and earlier does not permit queries for which the select list, HAVING condition, or ORDER BY list.. 2024. 4. 18. [Mysql] 그룹함수 사용법 (with 로 사용) 예전 포스팅에서 그룹함수에 대해서 작성한 포스팅이 있다. 그룹함수에 대해서 자세한 내용은 아래 참고 포스팅 참고 바란다. 이번 포스팅은 다른 DBMS 들과는 Mysql 에서 그룹함수 사용법이 조금 달라서 따로 작성한다. 대표적으로 Rollup 함수에 대해서만 사용법을 작성할 것이다. Oracle을 비롯한 다른 DBMS에서는 Rollup 을 아래와 같이 사용한다. Oracle Rollup 예시 SELECT ID, COUNT(ID) FROM TEST GROUP BY ROLLUP(ID); Mysql 사용법은 아래와 같다. Mysql Rollup 예시 SELECT ID, COUNT(ID) FROM TEST GROUP BY ID WITH ROLLUP; 이렇게 with 가 추가되어 쿼리를 작성해야한다. 참고 포스팅.. 2024. 4. 17. [Mysql] [Error] 1075 // auto increment 관련 오류 mysql 사용중에 아래와 같은 에러가 발생하였다. ERROR 1075 : incorrect table definition there can be only one auto column and it must be defined as a key 특정 컬럼을 AI(auto Increment) 로 설정을 지정했는데 해당 컬럼을 PK로 지정을 안했을때 발생하는 에러이다. 2024. 4. 13. 이전 1 2 3 4 5 다음 반응형