워크벤치를 설치했습니다.

 

사용하려고 했는데 글씨가 인간적으로 너무 작았습니다.

 

 그래서 글자를 키워보려고합니다.

 

폰트 또는 폰트 크기 변경하려면

 

1. 상단에 MySQLWorkbench > Preferences를 눌러준다

 

2.창이 뜨면, 왼쪽 메뉴 중 Font로 이동합니다.

 

3. 뒷쪽 숫자를 높여준다.

 

 원하는 폰트 + 띄어쓰기 + 폰트 크기 구조인데, 나는 폰트는 잘 모르므로 크기만 변경하고 한다.

대략 20으로 키워주고 OK를 눌러주면 된다

 

윗쪽이 SQL Editor

 

아래쪽이 Result Grid이다.

 

근데, 컬럼명 부분은 바뀌지 않는다.... 

 

 

 

Posted by sungho88
,

원격 서버에 있는 데이터베이스에 들어있는 데이터를 추출하여,

 

개인 pc에서 테스트를 하고 싶었다. 그래서, 일단 빼는 방법을 찾게 되었다.

 

mysql에서 데이터 뽑기

 

.cvs 파일로 뽑으면 된다. 다만, 구분자는 쉼표(,)로 하면 오류가 발생한다.

 

왜냐하면 게시판 데이터이기 때문에, 에디터 코드가 들어가 있거나, 장문의 글들이 있기 때문에

 

쉼표는 데이터를 구분해줄 수 없기 때문이다. 따라서 탭으로 구분하는 것이 좋다

 

이 것은 ','로 끊으라는 것인데, 이렇게하면 원하지 않는 결과가 나온다.

 

이렇게 하면, 탭으로 구분하라는 것이다. 이렇게 하면

 

쿼리 오케이 하면? 성공이다!

위치는 /tmp/mydaya.csv로 해놨으니 찾아가보면 엑셀 모양으로 저장이 되어있는 것을 볼 수 있다.

 

이것을 가져오는데... 문제가 발생한다.

 

한글이 깨진 것이다.

 

메모장에서 열면? 잘 나온다... 그렇다면 굳이 .csv 확장자를 할 필요가 없었다.   .txt로 

텍스트 파일로 받아도 괜찮다. 한글도 안 깨지고...아래와 같이 하는게 더 시간 단축이 될 것이다. 

 

mysql에서 데이터 넣기

1. phpmyadmin

2. 터미널에서 텍스트로 LOAD FILE

3. Mysql workbench

 

등으로 할 수 있는데,

 

phpmyadmin으로 했다.

 

<-- 가져오기 -- 파일선택 -- utf-8 -- 형식 : CSV --> 

 

열(컬럼) 구분자를 \t로 맞춰줘야한다.

 

 

 

Posted by sungho88
,

아파치에 업로드시킨 후, 웹 브라우저로 접속을 해보았다.


그런데 mysql DB로부터 데이터를 읽어오는데 문제가 발생했다.


영어나 숫자로 된 게시물은 정상적으로 출력되는 반면에,


한글로 된 게시물은 비정상적으로 출력되었다.


즉, 한글을 인식하지 못하여 물음표로만 출력되는 것이었다.


 

뭔가 인코딩 문제라 생각이 들어 구글을 통해 열심히 찾아보았다.


지금 사용하고 있는 우분투 버전은 16.04 최신 버전인데 이것때문에 그럴까?


그것은 아니었다. mysql에 설정이 latin1이 기본적으로 설정되어 있기 때문이라는것을 알게 되었다.


이것을 어떻게 utf8로 변경할까?


이 고마운 블로그


에서 해답을 알 수 있었다.


그 전에,


많은 블로그들이 my.cnf를 고치면 된다고들 했다. (설치 경로 : /etc/mysql)


하지만, 버전이 올라가면서 이 파일에서는 그냥 includedir로 다른 파일을 불러들이는 용도로 변했다.


그래서, 두 가지을 각각 찾아가서 열어보았다.


그 결과 밑에 있는 경로 /etc/mysql/mysql.conf.d/에 있는 mysql.cnf가 중요한 파일이다.


이 파일을 열면


$ sudo nano /etc/mysql/mysql.conf.d/mysql.cnf

또는 


$nano /etc/mysql/my.conf


뭔가 샵#이 붙은 내용이 줄줄이 나오는데, 그 중에서 



[mysqld] 이 부분을 찾아서, 맨 마지막에 캐릭터셋을 지정하주면 된다.


character-set-client-handshake=FALSE 

collation-server=utf8_general_ci 

character-set-server=utf8


그 다음 재부팅~


sudo /etc/init.d/mysql restart


이렇게 복붙하면 utf8로 설정이 되어, 정상적으로 한글이 나오게 된다.

짜잔.






//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////


블로그에 적어놓은 것을 잊고, 한참을 다시 검색하였다.

이번에는 우분투14.04에서 환경을 설정하는 중인데 우분투16.04와 몇 가지 차이점이 있다.


위에서 언급한것과 같이 14.04에서는 


/etc/mysql/my.conf에서 직접 수정이 가능하다(16.04의 경우 Include의 기능만 갖는다)


다음과 같이 


[client]에도,

default-character-set=utf8  추가


[mysqld]에는 이렇게, 여러개   추가

character-set-server=utf8

collation-server=utf8_general_ci

init_connect=SET collation_connection=utf8_general_ci

init_connect=SET NAMES utf8


[mysqldump]에도,

default-character-set = utf8  추가


[mysql]에도, 

default-character-set=utf8  추가


해주면 mysql 설정이 모두 utf-8로 변경이 되었다는 것을 mysql> status를 통해 볼 수 있다.

하지만, 사이트는 여전히... 물음표다. Mysql은 모두 변경되었는데...무엇이 문제일까?

음... 


한참을 검색하다가 많이 눈에 익은 사이트에 들어와서 정답을 알게 되었다.

그 사이트가 바로 내 블로그다ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ


내가 적어두고 다른데가서 삽질하다니.... 삽질 안 하려고 적어두고는 다른데가서 삽질을...


내가 입력한것과 이전에 작성해둔 코드와 비교하니 한 가지만 없었다.

바로바로바로바로


character-set-client-handshake=FALSE 


이것!!!!!!!!!!!!

이것을 


[mysqld] 하단에 넣어주면~?

???????????

?????????????????

????????????????????????


물음표를 좋아하던 사이트가 !

한글로 변환되어 보여지는것을 알 수있다.


정리.

[mysqld]에는 총 5개를 추가해준다.


character-set-client-handshake=FALSE

character-set-server=utf8

collation-server=utf8_general_ci

init_connect=SET collation_connection=utf8_general_ci

init_connect=SET NAMES utf8


Posted by sungho88
,

$bNo = $_GET['no'];

$tables = $_GET['table'];

$sql = 'select * from comment_free where b_no=' . $bNo;


처음에는 comment_free 테이블에 존재하는 데이터 열 중 b_no컬럼이 $bNo인것만 조회하기를 원했기때문에 위와 같이 작성했다.

하지만, 한가지 조건이 더 생기게 되어 WHERE조건 중 AND를 사용하게 되었다.

그런데, 분명 값을 잘 갖고 나오는데 result가 아무것도 나오지 않아 리스트가 빈 화면이 계속 나왔다.

계속 안 되어서 mysql을 터미널로 접속을 해 SQL문을 직접 입력해보기로 하였다.

먼저, 기존 코드를 작성해보니 조건에 따라 잘 조회되었다.

다음으로 안되는 코드를 갖다 복붙해보니...에러가 발생했다. 정말 안 되네? 왜 안되지? 하다가 

PHPMYADMIN을 오랜만에 열어 구조를 살펴보다가 알게되었다.

$bNo의 경우 데이터 타입이 INT이기 때문에 그냥 and b_no=' . $bNo;와 같이 호출을 하면 되지만,

$tables의 경우 데이터 타입이 TEXT이기 때문에 쌍따옴표(")를 붙여주어야한다.

따라서,


$sql = 'select * from comment_free where b_name=' . $tables . ' and b_no=' . $bNo;

이렇게 하면 안되고,


$sql = 'select * from comment_free where b_name="' . $tables . '" and b_no=' . $bNo;

이렇게 ' ' 안에 문자열이 끝나고 "를 붙여주어 이 $tables이 텍스트임을 알려주어야한다.



Posted by sungho88
,

PHP에서는 여러 데이터베이스를 사용할 수 있다.

그 중에서, MySQL 을 연동하기 위해 mysqli_connect() 함수를 사용한다.

DB관련 정보 파일을 따로 만드는 것이 좋다.

각 파일마다 동일한 접속을 하는것은 코드 자원의 낭비이자, 훗날 유지보수를 위해 피해야한다.

설정파일이므로 dbconfig.php로 이름을 지정하자.(이름은 물론 마음대로)


dbconfig.php


<?php


$DBhost = "localhost";

$DBuser = "root";

$DBpassword = "XXXXX";

$DBname = "testDB";


$conn = mysqli_connect($DBhost, $DBuser, $DBpassword, $DBname);


if ($conn->connect_error) {

die("Connection failed: " . $conn->connect_error);

}

?>



이렇게하면, php와 mySQL이 연동된다.


mysqli_connect의 매개변수


1 : 아이피 주소

2 : MySQL 아이디

3 : MySQL 비밀번호

4 : MySQL DB 이름

5 : MySQL PORT(생략 가능. 기본적으로 3306이기 때문에)


이렇게 파일을 작성했으면, 여러 PHP파일에서 불러다가 사용할 수 있다.

불러오는 방법은 


require_once() 또는 include_once()를 사용하면 된다. 이 외에도 require()나 include()가 존재한다.

_once가 붙었으므로 한 번 호출된다는 것은 알 것이다.

php 시작 전에 


require_once("../dbconfig.php");


을 입력하게 되면(물론 괄호 안에는 본인의 상황에 맞는 경로로 지정해야 함)

다른 php파일에서 위 파일을 사용할 수 있게 된다.

Posted by sungho88
,