mysql errcode 28

2018.04.24 13:59 from 웹개발/mysql


mysql 쿼리 실행시 Errcode: 28


에러 메세지를 보아하니 디바이스 /tmp 에 저장 공간이 없다는거 같은데...



그래서 서버에 접속해서 


du -sh /tmp


명령어를 실행해보니 42G ㅎㄷㄷ


저의 경우는 대충 예상이 가는게 재귀함수 테스트하느라고 많이 돌렸더니 아마 무한 루프에 빠진것들때문인듯 하네요




테스트 서버이니 과감하게 리스타트


service mysql restart



그리고 다시 확인해 보니 용량이 엄청 줄었네요



보통 /tmp 영역은 임시 공간이라 해당 프로그램을 재 시작 하게 되면 공간을 확보 할 수 있다는 군요!

'웹개발 > mysql' 카테고리의 다른 글

mysql errcode 28  (0) 2018.04.24
mysql 재귀(recursive) 쿼리, heirarchy 구조  (3) 2018.01.08
MariaDb 설치 - 윈도우, 리눅스  (0) 2017.07.14
[MySQL] SEQUENCE NEXTVAL 구현 프로시져  (0) 2017.07.11
Posted by 건강코더 트랙백 0 : 댓글 0

댓글을 달아 주세요

mysql 계층형 재귀 쿼리 사용법




위와 같은 계층형 테이블에서 기준 id값으로 자식 노드를 반환하도록 하는 방법


- 테스트 준비





테이블을 만들어주고 테스트 테이블을 만들어 주어 첫번째 구조와 같은 테이블을 생성 하였습니다.



1번 방법



3을 기준으로 자식 노드를 뽑는 쿼리로 실행 결과



계층 구조 

3 > 6 > 7 > 8  


결과 값(id)

6, 7, 8 



2번 방법





마찬가지 3기준 



결과 값은 동일 합니다.


하지만 첫번째는 하위 쿼리 등으로 사용시 동일한 결과 값을 보장 할 수 없기 때문에 


저의 경우 두번째 방법을 사용하였습니다.



참고 사이트 : https://code.i-harness.com/ko/q/13477c0





'웹개발 > mysql' 카테고리의 다른 글

mysql errcode 28  (0) 2018.04.24
mysql 재귀(recursive) 쿼리, heirarchy 구조  (3) 2018.01.08
MariaDb 설치 - 윈도우, 리눅스  (0) 2017.07.14
[MySQL] SEQUENCE NEXTVAL 구현 프로시져  (0) 2017.07.11
Posted by 건강코더 트랙백 0 : 댓글 3

댓글을 달아 주세요

  1. addr | edit/del | reply SOBOB 2019.01.09 14:01 신고

    안녕하세요! 도움 많이 받았습니다 덕분에 해결했네용
    제 블로그에 출처 표기해서 퍼가도 괜찮을까여?

  2. addr | edit/del | reply SOBOB 2019.01.09 14:11 신고

    감사합니다!! :-)

MariaDb 사이트 - https://downloads.mariadb.org/


1. 다운로드



2. 운영 체제에 맞게 선택



3. 그냥 다운로드~












4. root계정 비밀번호 설정 과 character set 설정 체크



5. port 3306 사용하셔도 되지만 전 사용중이라 3307로 했습니다.



6. 그냥 next



7. install



8. MySQL Client 설치



9. 테이블 생성 및 유저 생성 후 테이블에 대한 권한 수여


mysql은 보안상 기본적으로 외부접속을 허용하지 않기 때문에 계정을 생성할떄 특정 IP 혹은 localhost 를 지정하거나 %를 지정하여 외부접속을 허용할 수 있다.


- DB 생성 : create database DB이름

# create database bulkyDB;


- 생성된 테이블 확인

show databases;


- 계정 생성 : create user '계정아이디'@'접속위치' identified by '패스워드';

# create user 'bulky'@'%' identified by 'bulky';


- 권한 주기 : grant all privileges on DB이름.테이블 to '계정아이디'@'접속위치';( % : 모두 )

# grant all privileges on bulkyDB.* to 'bulky'@'%';            


- 권한 확인

# show grant for 'bulky'@'%';


- 계정 삭제

# drop user 'bulky'@'%';


- 생성된 DB 접속 후 현재 시간 갖고오기

# use bulkyDB;

# SELECT NOW() FROM DUAL;


10. 접속 테스트(토드)



기본 포트는 3306이나 저는 겹치기 때문애 3307로 변경하였습니다. 위에 MariaDB 설치시 설정한 포트를


적으시면 됩니다. 건드리지 않았다면 3306


11. 테스트 쿼리 작성





* 리눅스 MariaDB 설치

1. 파일 생성

#vi /etc/yum.repos.d/MariaDB.repo


# MariaDB 10.1 CentOS repository list - created 2017-05-23 06:18 UTC

# http://downloads.mariadb.org/mariadb/repositories/

[mariadb]

name = MariaDB

baseurl = http://yum.mariadb.org/10.1/centos7-amd64

gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

gpgcheck=1


파일 저장 후


2. 설치 > 실행 > 접속

# yum install MariaDB-server MariaDB-client

# systemctl start mariadb

# mysql –u root mysql


3. 관리자 패스워드 변경
# SET PASSWORD FOR root@localhost=PASSWORD(‘패스워드’);
#flush privileges; -> 내부 캐쉬 메모리 초기화

4. root 패스워드 변경
# mysqladmin password
New password: 
Confirm new password:

%%% 비밀번호 분실 시 빈밀번호 초기화 방법 %%%

서비스를 멈추고 안전모드 실행!

# systemctl stop mysql
# /usr/bin/mysqld_safe –skip-grant mysql -u root -p

패스워드를 물으면 그냥 엔터를 입력해 mysql 모드 진입!

mysql > use mysql 
mysql > update user set password=password(‘신규 패스워드’) where user=’root’; 
mysql > flush privileges;
mysql > exit;
mysql 모드에 나왔으니 서비스 재실행~
# systemctl reload mysql
※ 재실행이 제대로 안되서 reboot가 필요할때도 있음.


'웹개발 > mysql' 카테고리의 다른 글

mysql errcode 28  (0) 2018.04.24
mysql 재귀(recursive) 쿼리, heirarchy 구조  (3) 2018.01.08
MariaDb 설치 - 윈도우, 리눅스  (0) 2017.07.14
[MySQL] SEQUENCE NEXTVAL 구현 프로시져  (0) 2017.07.11
Posted by 건강코더 트랙백 0 : 댓글 0

댓글을 달아 주세요

Table Scheme

CREATE TABLE sequences ( name varchar(32), currval BIGINT UNSIGNED ) ENGINE=InnoDB;


DELIMITER $$
CREATE PROCEDURE `drop_sequence` (IN the_name text)
MODIFIES SQL DATA
DETERMINISTIC
BEGIN
    DELETE FROM sequences WHERE name=the_name;
END


DELIMITER $$
CREATE PROCEDURE `create_sequence`(IN the_name text)
MODIFIES SQL DATA
DETERMINISTIC
BEGIN
    DELETE FROM sequences WHERE name=the_name;
    INSERT INTO sequences VALUES (the_name, 0);
END


DELIMITER $$
CREATE FUNCTION `nextval`(the_name varchar(32))
RETURNS BIGINT UNSIGNED
MODIFIES SQL DATA
DETERMINISTIC
BEGIN
    DECLARE ret BIGINT UNSIGNED;
    UPDATE sequences SET currval=currval+1 WHERE name=the_name;
    SELECT currval INTO ret FROM sequences WHERE name=the_name limit 1;
    RETURN ret;
END


DELIMITER $$
CREATE FUNCTION `currval` (the_name varchar(32))
RETURNS BIGINT UNSIGNED
READS SQL DATA
DETERMINISTIC
BEGIN
    DECLARE ret BIGINT UNSIGNED;
    SELECT currval INTO ret FROM sequences WHERE name=the_name limit 1;
    RETURN ret;
END


DELIMITER $$
CREATE FUNCTION `market_sms`.`setval` (the_name varchar(32), the_val BIGINT UNSIGNED)
RETURNS BIGINT UNSIGNED
MODIFIES SQL DATA
DETERMINISTIC
BEGIN
    DECLARE ret BIGINT UNSIGNED;
    UPDATE sequences SET currval=the_val WHERE name=the_name;
    SELECT currval INTO ret FROM sequences WHERE name=the_name limit 1;
    RETURN ret;
END


사용 예)

call create_sequence('bar');

select nextval('bar'); #1
select currval('bar'); #1
select nextval('bar'); #2
select currval('bar'); #2


저도 사실 프로시져 모르는데 그냥 여기 나온것들 복붙해서 하나씩 실행하니 그냥 되네요


유용한듯!

'웹개발 > mysql' 카테고리의 다른 글

mysql errcode 28  (0) 2018.04.24
mysql 재귀(recursive) 쿼리, heirarchy 구조  (3) 2018.01.08
MariaDb 설치 - 윈도우, 리눅스  (0) 2017.07.14
[MySQL] SEQUENCE NEXTVAL 구현 프로시져  (0) 2017.07.11
Posted by 건강코더 트랙백 0 : 댓글 0

댓글을 달아 주세요