Mysql - TEXT Length

Posted 01 13, 2011 12:59, Filed under: DataBase/Mysql

MyISAM tables in MySQL have a maximum size of a row of 65,535 bytes, so all the data in a row must fit within that limit. However, the TEXT types are stored outside the table itself and only contribute 9 to 12 bytes towards that limit. (For more information about this refer to the MySQL Manual - Data Storage Requirements chapter).

TEXT data types are also able to store much more data than VARCHAR and CHAR text types so TEXT types are what you need to use when storing web page or similar content in a database.

The maximum amount of data that can be stored in each data type is as follows:

TINYTEXT 256 bytes  
TEXT 65,535 bytes ~64kb
MEDIUMTEXT  16,777,215 bytes ~16MB
LONGTEXT 4,294,967,295 bytes ~4GB

In most circumstances the TEXT type is probably sufficient, but if you are coding a content management system it's probably best to use the MEDIUMTEXT type for longer pages to ensure there are no issues with data size limits.

01 13, 2011 12:59 01 13, 2011 12:59

Trackback URL : http://develop.sunshiny.co.kr/trackback/583

Leave a comment

Mysql - auto_increment 값 초기화

Posted 08 20, 2010 22:13, Filed under: DataBase/Mysql


mysql  auto_increment  자동증가값 초기화시키기

테스트 테이블을 쓰다보니까 auto increment 값이 어마어마하게 커져버렸다.
이럴때 auto increment 를 초기화해서 깨끗히 사용해보장!!

 -> alter table 테이블명 auto_increment = 1


 출처 : http://hompydesign.com/bbs/board.php?bo_table=mysql_study&wr_id=55
08 20, 2010 22:13 08 20, 2010 22:13

Trackback URL : http://develop.sunshiny.co.kr/trackback/542

Leave a comment

Mysql - mysql 설치후 Character set 변경

Posted 01 28, 2010 13:06, Filed under: DataBase/Mysql

# mysql 기본 설치시에 원하는 캐릭터셋이 아닌 다른 걸로 설정이 되어있을경우에 변경합니다.


# 현재 캐릭터셋 검색
mysql>show variables like 'char%';

+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | latin1                           |
| character_set_connection | latin1                           |
| character_set_database   | latin1                            |
| character_set_filesystem | binary                           |
| character_set_results    | latin1                           |
| character_set_server     | latin1                            |
| character_set_system     | utf8                             |
| character_sets_dir       | /opt/mysql/mysql/share/charsets/ |
+--------------------------+----------------------------------+


mysql>status 또는 \s
--------------
mysql  Ver 14.14 Distrib 5.1.42, for pc-solaris2.10 (i386) using readline 5.1

Connection id:          1
Current database:      
Current user:           계정명@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.1.42 명ySQL Community Server (GPL)
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    latin1
Conn.  characterset:    latin1
UNIX socket:            /tmp/mysql.sock
Uptime:                 12 sec

Threads: 1  Questions: 6  Slow queries: 0  Opens: 15  Flush tables: 1  Open tables: 8  Queries per second avg: 0.500
--------------


# 데이타 베이스 생성 : utf8 타입
CREATE DATABASE 데이터베이스명 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

# 데이타 베이스 생성 : euckr 타입
CREATE DATABASE 데이터베이스명 DEFAULT CHARACTER SET euckr COLLATE euckr_korean_ci;

# 데이타 베이스 생성후 외부 접속하기 위해서 IP를 추가 해줍니다.
GRANT ALL PRIVILEGES ON 데이타베이스명.* TO '계정명'@'192.168.1.100' IDENTIFIED BY '비밀번호' WITH GRANT OPTION;


## 각각의 캐릭터 셋을 변경 - 이 변경 방법은 mysql 데몬이 재실행 될경우에 초기화 됨.
mysql> SET character_set_client = utf8;
mysql> SET character_set_results = utf8;
mysql> SET character_set_connection = utf8;
mysql> ALTER DATABASE DB명 DEFAULT CHARACTER SET utf8;
commit;


## /etc/my.cnf 파일에 설정 - 이 설정 방법을 추천 mysql 데몬이 재실행 되어도 설정을 유지 합니다.

mysql>vi /etc/my.cnf

################# utf8 설정 #################
[client]
#password       = your_password
port            = 3306
socket          = /tmp/mysql.sock

default-character-set=utf8

[mysqld]
init_connect=SET collation_connection = utf8_general_ci
init_connect=SET NAMES utf8
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci

port            = 3306
socket          = /tmp/mysql.sock
basedir       = /opt/mysql/mysql
datadir        = /opt/mysql/mysql/data

set-variable    = table_cache=1024
set-variable    = max_connections=500
set-variable    = max_user_connections=100
set-variable    = max_connect_errors=10000

log-slow-queries
set-variable    = long_query_time=3
skip-name-resolve

# InnoDB 사용 안할시 아래 내용추가
#skip-innodb
sync_binlog = 1

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
default-character-set=utf8

################# utf8 설정후 확인 #################

mysql> \s  
--------------
mysql  Ver 14.14 Distrib 5.1.42, for pc-solaris2.10 (i386) using readline 5.1

Connection id:          4
Current database:      
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.1.42-log MySQL Community Server (GPL)
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /tmp/mysql.sock
Uptime:                 19 min 31 sec

Threads: 2  Questions: 33  Slow queries: 1  Opens: 15  Flush tables: 1  Open tables: 8  Queries per second avg: 0.28


mysql> show variables like 'char%';
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | utf8                             |
| character_set_connection | utf8                             |
| character_set_database   | utf8                             |
| character_set_filesystem | binary                           |
| character_set_results    | utf8                             |
| character_set_server     | utf8                             |
| character_set_system     | utf8                             |
| character_sets_dir       | /opt/mysql/mysql/share/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.99 sec)


################# euckr 설정 #################

[client]
default-character-set=euckr

[mysqld]
default-character-set=euckr
init_connect=SET collation_connection=euckr_korean_ci
init_connect=SET NAMES euckr
character-set-server=euckr
collation-server=euckr_korean_ci

port            = 3306
socket          = /tmp/mysql.sock
basedir       = /opt/mysql/mysql
datadir        = /opt/mysql/mysql/data

set-variable    = table_cache=1024
set-variable    = max_connections=500
set-variable    = max_user_connections=100
set-variable    = max_connect_errors=10000

log-slow-queries
set-variable    = long_query_time=3
skip-name-resolve

# InnoDB 사용 안할시 아래 내용추가
#skip-innodb
sync_binlog = 1

[mysqldump]
default-character-set=euckr

[mysql]
default-character-set=euckr

01 28, 2010 13:06 01 28, 2010 13:06

Trackback URL : http://develop.sunshiny.co.kr/trackback/385

  1. Mysql - mysql 설치후 Character set 변경

    Tracked from 멀고 가까움이 다르기 때문 03 29, 2010 18:25 Delete

    # mysql 기본 설치시에 원하는 캐릭터셋이 아닌 다른 걸로 설정이 되어있을경우에 변경합니다. # 현재 캐릭터셋 검색 mysql>show variables like 'char%'; +--------------------------+----------------------------------+ | Variable_name | Value | +--------------------------+---------------------------------..

  1. # 연홍 2010年 03月 29日 18時 26分 Delete Reply

    ^^유용한 정보 감사해요~!

  2. # sunshiny 2010年 03月 29日 23時 01分 Delete Reply

    네 글 남겨주셔서 고맙습니다^^

    1. Re: # 연홍 2010年 03月 30日 11時 41分 Delete

      궁금한점이 있는데..혹 원인을 아시는지... /etc/my.cnf를 수정했는데요. mysql> show variables like 'char%';이렇게 확인해보면 character_set_database ,character_set_server 이 두개만 utf8로 변경이 안되있더라고요..흠..데이터베이스와 테이블들도 모두 utf8로 변경했는데..왜...그런지..^^;;; 혹 아시면 답변좀 부탁 드려요...

  3. # sunshiny 2010年 03月 30日 13時 16分 Delete Reply

    안녕하세요. ^^
    테스트를 해봤는데요.

    혹시 위의 예에서 [mysqld] 이부분 넣어주셨나요?
    [mysqld]
    default-character-set=utf8

    [mysqld] 이 괄호를 인식하여 설정이 됨으로 괄호까지 넣어주셔야 됩니다.

    # [mysqld] 의 적용 범위
    character_set_database
    character_set_server

    # [mysql] 의 적용 범위
    character_set_client
    character_set_connection
    character_set_results

    제가 확인해본 바로는 위와 같습니다^^

    1. Re: # 연홍 2010年 03月 30日 13時 39分 Delete

      헐~~~~~설명 감사합니다!!!!!
      ㅜㅜ설명해주셔서 더욱 정확히 알았습니다.
      안된이유는 데몬이 제대로 재시작이 안되그랬네요.^^;;;
      감사합니다~!
      남은시간도 편안하세요~!!!

Leave a comment


# 계정 생성
INSERT INTO USER(HOST, USER, PASSWORD, SELECT_PRIV, INSERT_PRIV, UPDATE_PRIV, DELETE_PRIV, CREATE_PRIV, DROP_PRIV, SSL_CIPHER,  X509_ISSUER, X509_SUBJECT)
VALUES('localhost', 'userId', password('1234'), 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '');



Mysql을 설치하고난후 외부에서 접속하기 위해서 접속 가능한 아이피를 등록해줍니다.
등록되지 않은 외부 클라이언트에서 접속을 하고자 할때,
아래와 같은 에러 메세지가 나오면서 접속이 되질 않습니다.

Host '192.168.1.190' is not allowed to connect to this MySQL server

## DB 사용자및 아이피 등록 ##
root 계정으로 접속하여 아래와 같이 접속하고자 하는 외부 아이피를 등록을 해줍니다.

mysql> GRANT ALL PRIVILEGES ON 데이타베이스명.* TO '접속ID'@'192.168.1.100' IDENTIFIED BY '패스워드' WITH GRANT OPTION;

mysql> GRANT ALL PRIVILEGES ON sunshiny_db.* TO sunshiny@`127.0.0.1` identified by "1234";

등록후 적용을 위해 아래 명령을 실행합니다.
mysql>FLUSH PRIVILEGES;

# 같은 대역의 모든 아이피 접속을 허용하고자 할경우에는 '접속ID'@'192.168.1.%' 와 같이 %를 넣어줍니다.
01 19, 2010 09:23 01 19, 2010 09:23

Trackback URL : http://develop.sunshiny.co.kr/trackback/375

Leave a comment




1. 기능 : Dababase 의 메타 정보를 이용하여 테이블별 로우의 값을 추출하여 insert쿼리로 완성된 sql 파일과 xls 파일로 저장을 합니다.
# sql 파일로 직접 데이타를 insert 할수 있고, xls 파일은 엑셀로 활용하거나,
   엑셀로더가 지원되는 DB툴에서 데이타를 업로드 할수 있습니다.
   - 기존 euc-kr로 인코딩이 설정된 Database에서 utf-8 또는 기타 인코딩이 변경된 Database로 데이타 이동시에  (한글,한자깨짐)사용해도 될거 같습니다.

2. 현재 구현된 추출 가능한 Database는 Oracle, Mysql 입니다.
    기타 다른 Database도 각각의 설정만 추가로 해준다면 가능할걸로 생각됩니다.

3. 테스트 사항
   # sql 파일로 저장시에는 테이블당 로우 수가 100만건 이상의 데이타까지 정상적으로 생성이 됐습니다.
   # xls 파일로 저장시에는 JVM의 메모리를 많이 사용한 관계로 50만건 정도 이상의 데이타를 만들경우,
      java.lang.OutOfMemoryError 발생 했습니다.
      JVM 메모리 설정으로 어느정도까지는 더 생성할수 있을걸로 생각 됩니다.

4. 특이 사항
   # xls 파일로 저장시 엑셀에서 하나의 Sheet 에 쓸수있는 로우 갯수가 65,536개로 제한된 문제를 해결하기 위해
      하나의 시트에 65,536개의 데이타를 쓰기전에 약 65,530 개쯤에
      다음 시트에 데이타를 저장하도록 구현 했습니다.

# 사용법 :
     1. Config.properties 파일에서 Database와 저장위치 방식등을 설정합니다.
     2.
     - Eclipse 사용시 : meta 패키지 안에 Main.java 를 실행하면 됩니다.

     - Command 창에서 실행시 : 압축을 푼디렉토리의 경로를 확인하여 start_getData.cmd 의 파일을
        에디터로 연후에 해당하는 경로를 설정해준후에 start_getData.cmd 파일을 실행해주면 됩니다.

# 추가 내용 :
  - 2009.11.29
  1. DB의 컬럼 속성에서 DATE 타입의 데이타를 엑셀로 저장할때 '2009-11-29 18:31:38.0'와 같이
    마지막에 '.0' 이 포함되어 저장되는 이유로 DB툴을 이용하여 엑셀파일 로드시에
    DATE타입 에러가 발생하는 문제 처리.
  2. Command 실행 파일 작성(start_getData.cmd).
  3. 엑셀 파일명에 생성된 시트의 갯수 등록.  

 - 2010.06.25
  1. JVM 메모리 부족으로 프로세스가 종료되는경우. 그로인해 엑셀파일이 정상적으로 생성되지 않아 열리지 않는경우 start_getData.cmd 파일에 아래 옵션을 추가 해줍니다.
 -server -Xms256m -Xmx1024m
예) java -server -Xms256m -Xmx1024m -classpath "" Main



# 필요할때가 있을것 같아서, 일 하면서 틈틈히 만들었습니다.
  공개한 소스를 보시고 조언이나 지적을 해주시면 많은 도움이 될것 같습니다.^^;

11 5, 2009 18:37 11 5, 2009 18:37

Trackback URL : http://develop.sunshiny.co.kr/trackback/326

Leave a comment

Mysql - DB 백업 및 복구

Posted 08 3, 2009 17:42, Filed under: DataBase/Mysql

###
1. -u뒤에 붙여서 사용
2. mysqldump 를 찾지 못할경우 /mysql/bin/mysqldump 경로로 이동또는 지정

[root@ns sunshiny] mysqldump -uftptest -ptftptest database_name > ftptest.sql
ftptest 의 db를 ftptest.sql 파일로 백업합니다.

[root@ns sunshiny] mysql -uftptest -pftptest < ftptest.sql
ftptest.sql 로 백업된 파일을 복구합니다.


# 한글 깨짐을 방지하기 위하여 character-set 를 설정하여 임포트 합니다.
 mysql -u your_id -p --default-character-set=utf8 your_database_name < your_database_name.sql

 mysql -u your_id -p  your_database_name < your_database_name.sql

mysql 커멘드 창에서 실행
mysql> source C:\test.sql

windows 에서도 cmd 창을 이용하여 동일한 명령어 사용.


# 예외사항 :
import 시에 접속 권한이 없다는 에러가 발생할시에는 아래와같이 권한 설정을 해줍니다.

# 외부 접속 권한 설정
# 여기에서 'localhost' 부분은 접속하고자하는 IP 또는 도메인을 적어줍니다.
# 예) mysql 이 192.168.1.100 번 서버에 설치되어있고, 접속하고자 하는 자신의 로컬 IP가  192.168.1.10 일경우 'localhost' 부분을 '192.168.1.10' 으로 설정 해줍니다.

GRANT ALL PRIVILEGES ON *.* to 'sunshiny'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

위 명령이 정상 완료시 아래 명령어 실행
flush privileges;


### euc_kr 버전의 mysql 에서 dump 파일(sql)을 받고 utf8 서버로 데이타 이관을 하고자 할경우 ###
우선 아래 처럼 mysqldump 를이용해서 백업을 받습니다.

[root@ns sunshiny] mysqldump -uftptest -ptftptest database_name > ftptest.sql

그리고 생성된 sql파일을 열어서 다른이름으로 저장하기를 선택하여 utf-8형식으로 저장을 합니다.
그런다음에 아래와 같이 import를 실행하면 한글 데이타가 깨지지 않고 정상적으로 이관 됩니다.

mysql>mysql -u your_id -p --default-character-set=utf8 your_database_name < your_database_name.sql

08 3, 2009 17:42 08 3, 2009 17:42

Trackback URL : http://develop.sunshiny.co.kr/trackback/264

Leave a comment


Recent Posts

  1. Linux - Telnet 서비스 비활성및 실행
  2. NT - 서버 원격데스크탑 연결
  3. NT - http와 https간에 세션 공유가...
  4. Unix - 대량 파일 이동, 삭제시 Argu...
  5. Oracle - SYS_CONTEXT 함수를 이용하...

Recent Comments

  1. 네. 고맙습니다^^ 행복한 한해 보... sunshiny 01 16,
  2. sunshiny님. 안녕하세요... 올려 주... yihans 01 16,
  3. 답글 주셔서 고맙습니다^^ 소스 복... sunshiny 01 11,
  4. 관리자만 볼 수 있는 댓글입니다. 비밀방문자 01 11,
  5. 넵 답변감사합니다^^ 좋은 하루 되... 노로링

Recent Trackbacks

  1. 윈도우 cmd 명령어 팁 월풍도원(月風道院) - Delight on th... %M
  2. 파일 압축 Like RadioHead %M
  3. Mysql - mysql 설치후 Character set... 멀고 가까움이 다르기 때문 %M

Calendar

«   02 2012   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      

Bookmarks

  1. 위키피디아
  2. MysqlKorea
  3. Oracle All Documentation
  4. 엑셈
  5. 오라클 클럽
  6. 네이버개발자센터
  7. API - Java
  8. API - Spring
  9. Java Community
  10. Reference - Spring
  11. 스프링사용자
  12. 자바지기
  13. Ready System
  14. Solaris Freeware
  15. Linux-Site
  16. RedHat Korea
  17. 윈디하나의 솔라나라

Site Stats

TOTAL 217714 HIT
TODAY 16 HIT
YESTERDAY 115 HIT