본문 바로가기
반응형

IT/Database112

[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 RECURSIVE) 이전 포스팅에서1. Oracle 에서 계층형 쿼리 사용법2. Mysql 의 WITH 절에 대해서 다룬 포스팅이 있다.자세한 내용은 아래 참고 포스팅 참고 바란다. 이번 포스팅에서는 Mysql 에서 계층형 쿼리를 사용하는 방법이다. 바로 본론으로 들어가 예시 코드와 데이터를 먼저 확인해보면 아래와 같다. 데이터idparent_id1null213142526373위 데이터를 그림으로 나타내면 아래와 같다. └── 1            └── 2              │         └── 4              │         └── 5            └── 3                        └── 6                        └── 7그럼 이제 이 데이터로 계층형 .. 2024. 11. 3.
[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] 테이블 정의서 만들기 테이블 정의서란 테이블에 대해 컬럼명, 길이, key, default 등 테이블에 대한 모든 정보를 정리해두는 정의서 이다. 하나하나 보면서 만들수도 있지만 아래 쿼리 한번이면 해당 데이터베이스 내에 모든테이블에 대해 정의서가 만들어진다. SELECT a.TABLE_NAME '테이블명',b.ORDINAL_POSITION '순번', b.COLUMN_NAME '필드명', b.DATA_TYPE 'DATA TYPE', b.COLUMN_TYPE '데이터길이', b.COLUMN_KEY 'KEY', b.IS_NULLABLE 'NULL값여부', b.EXTRA '자동순번', b.COLUMN_DEFAULT '기본값', b.COLUMN_COMMENT '필드설명' FROM information_schema.TABLES a J.. 2024. 7. 18.
[Mysql] Workbench 에서 ERD 그리기 Mysql 을 사용한다면 Workbench 를 사용하는 사람이 꽤 많을 것이다. Workbench 의 기능중 자동으로 ERD를 그려주는 기능이 있어서 정리한다. 우선 아래 사진과 같이 Database> Reverse Engineer 탭을 들어간다. 그럼 아래와 같이 뜨는데,설정값을 입력하고 다음다음 넘어가면서 설정을 한다. 그리고 어떤 Database를 그릴지 선택도 하고 나면 ERD가 그려진 화면을 만날수 있다.모두 완료가 되면 아래 사진과 같이 보이게 된다. 참고로 저장된 확장자는 mwb 인데Mysql WorkBench 파일의 약자이다. 2024. 7. 17.
[Mysql] Trigger 사용 이전 포스팅에서 Trigger에 대해 다룬 글이 있다.자세한 내용은 아래 참고 포스팅 참고 바란다. Mysql 에서 Trigger 를 사용하려면 아래와 같이 사용이 가능하다.  예제DELIMITER //CREATE TRIGGER update_level AFTER UPDATE ON game_table   FOR EACH ROW BEGIN    IF NEW.level_up != OLD.level_up THEN       UPDATE game_table SET level_up = NEW.level_up        WHERE level_up = OLD.level_up;   END IF;   END; //DELIMITER ; 문법 설명 DELIMITER //문장 구분자를 '//'로 설정원래 명령문 또는 쿼리를 .. 2024. 7. 16.
반응형