내보내기 혹은 dump된 sql파일을 mysql을 실행할 디렉토리에 복사해놓습니다.
굳이 실행할 곳에 복사 안해도 상관은 없습니다만 경로 입력할때 풀경로를 다 입력해주어야합니다.
실행할곳에 복사를 해놓는경우 경로가 필요없이 ./스크립트.sql 이런식으로 입력해주면 간단해져요
mysql> source ./경로/스크립트.sql 실행하면 MSSQL에서 쿼리실행기로 실행한것처럼
실행되면서 쿼리가 실행되어진다.
대책을 찾던 중 KLDP에 나온 내용으로 해결.
1. 퍼미션 문제
일반 유저에서
ls -al /var/run/mysqld/mysqld.sock
해서 확인을 해봅니다.
펼쳐두기..
2. 퍼미션을 조정하는 것이 여의치가 않으면, /etc/my.cnf 에
인용:
[mysqld]
socket=/tmp/mysql.sock
[client]
socket=/tmp/mysql.sock
을 넣고 서버와 클라이언트가 /tmp에 만들어지는 mysql.sock 파일을 사용하게 하는 방법으로 돌아갈 수 있습니다.
3. mysql이 설치된 폴더의 권한을 바꿔주세요..
mysql이라는 유저를 생성해서..
chown mysql /path/mysql
이렇게 해주세요
<< 압축하기 >>
* tar 와 gzip 따로 하기
# tar cvf file_name.tar *.c
# gzip file_name.tar
* tar 와 gzip 동시에
# tar cfp - target_dir | gzip -c > made_file.tar.gz
// target_dir = 압축할 파일들이 들어 있는 디렉토리
// made_file = 만들어질 압축파일의 이름.
<< 압축풀기 >>
* tar 와 gzip 따로 하기
# gzip -d file_name.tar.gz
# tar -xvf file_name.tar
* tar 와 gzip 동시에
# gzip -dc source_file.tar.gz | tar xvfp
-----여기까지 긁어왔습니다.
출처:블로그 > 동내스리가의 진공청소기
======================================================================
압축을 했으면 파일이 하나 생겼을 겁니다. 만약 안생겼거나 다른이름으로 압축파일이 생성되었다면 압축이 실패한 것이구요.
원래 있던 파일에 대해서는 변화가 없을 텐데 smong.c, hell.c는 무슨 말인지 잘 모르겠네요. 혹시 *.c 를 썻다는 말인지. 그렇다고 하더라도 하나의 파일이 더생겼다뿐 원래있던 파일이 변화하지는 않습니다. 압축 파일을 만드는 것이지 파일하나하나를 압축상태로 만드는게 아니죠.
만약 저 명령어로 에라가난다면 압축이 잘못된 것 같으니 밑에 걸 참고해서 다시 해보시길 바랍니다.
[[[[쉽게정리]]]]처음부터 다시 해보시지요...제가 gzip으로 하는 명령은 tar에서 같이 쓰다보니 정확히 잘 몰라서 위에거 긁어 왔구요. 여기부턴 제가 압축하는 예입니다.
님이 할려는 작업을 보니 yy(가상)안에 xxxx.c 이름의 파일을 모조로 압축하려는 것인가 보네요.
일단 디렉토리안에서 tar cvf c.tar *.c 로하면 tar 압축이되고 tar zcvf c.tgz *.c로 하면 두번압축해서 tar,gzip압축이 됩니다.
잘 생각이 안나는데 만약 이 명령어로 안된다면 yy디렉토리로 이동후
tar cvf c.tar ./yy/*.c 이렇게 하면 확실히 되리라 생각합니다.
만약 디렉토리전체를 압축하려면 일단 디렉토리보다 상위 디렉토리로 이동한후 압축해야 합니다. 만들어지고 있는 압축파일을 다시 압축하려고 하다 에라가 나기때문이죠.
만약 /etc/file 에서 file 디렉토리안에 파일을 압축하려면 먼저 etc 디렉토리로 간 다음
etc]#tar cvf file.tar ./file 하면 될 것 같네요.
혹은 절대경로로 tar cvf file.tar /etc/file 이 경우 etc/file디렉토리안에서만 아니면 어디에서든 사용할수 있겠지요.
풀때는 tar xvf file.tar 하면 될 것 같네요.
여기서 c는 압축옵션이고 x는 풀기옵션입니다.
(출처 : '리눅스 압축풀기' - 네이버 지식iN)
※ 이미 생성된 테이블에 PK 제약조건 추가하기
ALTER TABLE [테이블명] ADD CONSTRAINT [제약조건이름] PRIMARY KEY(컬럼명);
EX) ALTER TABLE product ADD CONSTRAINT product_pdcode_pk PRIMARY KEY(pdcode);
product 라는 테이블에 product_pdcode_pk 라는 이름을 가진 PK 제약조건을 추가한다.
※ 이미 생성된 테이블에 FK 제약조건 추가하기
ALTER TABLE [테이블명] ADD CONSTRAINT [제약조건이름] FOREIGN KEY(컬럼명)
REFERENCES [부모테이블명](PK컬럼명) [ON DELETE CASCADE];
EX)
ALTER TABLE category ADD CONSTRAINT category_pcode_fk FOREIGN KEY(pcode)
REFERENCES product(pdcode) ON DELETE CASCADE;
※ 제약조건의 삭제
ALTER TABLE [테이블명] DROP CONSTRAINT [제약조건이름];
EX) ALTER TABLE product DROP CONSTRAINT product_pcode_fk;
제약조건을 삭제할 경우에는 FK 제약조건부터 먼저 삭제해준다.
※ NOT NULL 제약조건의 추가
ALTER TABLE [테이블명] MODIFY [컬럼명] [데이터타입] CONSTRAINT [제약조건이름]
NOT NULL;
EX) ALTER TABLE product MODIFY pname varchar2(20) CONSTRAINT product_pname_nn
EX) NOT NULL;
MySQL foreign key 예제
a_tbl, b_tbl 두개의 테이블이 있다고 하자
create table a_tbl(
user_id varchar(10) not null default'',
user_name varchar(30) not null default'',
primary key(`user_id`)
) engine=innodb;
create table b_tbl(
user_id varchar(10) not null,
user_tel varchar(15) not null,
primary key(`user_id`),
constraint fk_user_id -- 제약조건명 : fk_user_id
foreign key (`user_id`) -- 테이블의 필드(user_id)가 foreign key
references a_tbl(`user_id`) -- 테이블(a_tbl)의 필드(user_id)를 참조
on delete cascade -- 참조키가 삭제되면 foreign key도 삭제
on update cascade -- 참조키가 업데이트되면 foreign key도 업데이트
) engine=innodb;
CASCADE : 참조키가 삭제되거나 업데이트 되면 동일하게 foreign key도 동일하게 맞춤.
RESTRICT : 참조키 변경(삭제 혹은 업데이트)되는 것을 방지함.
SET NULL : 참조키에 변경(삭제 혹은 업데이트) 되면 foreign key 값을 null 로 저장.
NO ACTION : 참조키에 변경(삭제 혹은 업데이트) 되어도 아무런 동작을 하지 않음.(foreign key의 이미 없음)
각 테이블에 데이터 입력를 입력하자.
insert into a_tbl values('happy','hong gil dong');
insert into a_tbl values('appleman','lee soon shin');
insert into a_tbl values('keeper','lee myoung park');
+----------+-----------------+
| user_id | user_name |
+----------+-----------------+
| appleman | lee soon shin |
| happy | hong gil dong |
| keeper | lee myoung park |
+----------+-----------------+
3 rows in set (0.00 sec)
insert into b_tbl values('happy','010-1234-5678');
insert into b_tbl values('appleman','011-4321-8765');
insert into b_tbl values('keeper','016-9876-5432');
+----------+---------------+
| user_id | user_tel |
+----------+---------------+
| appleman | 011-4321-8765 |
| happy | 010-1234-5678 |
| keeper | 016-9876-5432 |
+----------+---------------+
3 rows in set (0.00 sec)
각 두테이블을 조인하자.
mysql> select a.user_id, b.user_id, a.user_name, b.user_tel from a_tbl a join b_tbl b where a.user_id=b.user_id;
+----------+----------+-----------------+---------------+
| user_id | user_id | user_name | user_tel |
+----------+----------+-----------------+---------------+
| appleman | appleman | lee soon shin | 011-4321-8765 |
| happy | happy | hong gil dong | 010-1234-5678 |
| keeper | keeper | lee myoung park | 016-9876-5432 |
+----------+----------+-----------------+---------------+
참조키를 업데이트한 후에 확인하자.
mysql> update a_tbl set user_id='sadman' where user_id='happy';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select a.user_id, b.user_id, a.user_name, b.user_tel from a_tbl a join b_tbl b where a.user_id=b.user_id;
+----------+----------+-----------------+---------------+
| user_id | user_id | user_name | user_tel |
+----------+----------+-----------------+---------------+
| appleman | appleman | lee soon shin | 011-4321-8765 |
| keeper | keeper | lee myoung park | 016-9876-5432 |
| sadman | sadman | hong gil dong | 010-1234-5678 |
+----------+----------+-----------------+---------------+
3 rows in set (0.00 sec)
운영자 : 김두형(www.sunmysql.co.kr)
email : beansoft@nate.com
업데이트 : 20080923