mysql - 특정 컬럼명 검색하기 , 포함하는 테이블 찾기

DataBase/My-SQL|2021. 11. 23. 13:23
반응형
	SELECT 	TABLE_SCHEMA
		,	TABLE_NAME
		,	COLUMN_NAME
		,	CHARACTER_MAXIMUM_LENGTH
		,	ORDINAL_POSITION
		,	COLUMN_DEFAULT
		,	DATA_TYPE
		,	COLUMN_TYPE
		,	COLUMN_KEY
		,	EXTRA
		,	COLUMN_COMMENT
	FROM 	INFORMATION_SCHEMA.COLUMNS
	WHERE 	TABLE_SCHEMA		= '디비명' 
		AND COLUMN_NAME			= '컬럼명';

 

반응형

 

동일 컬럼이 여러개 인 경우 뒤져보기.

댓글()

GROUP_CONCAT 최대 결과 길이 변경하는 방법

DataBase/My-SQL|2020. 3. 3. 17:34
반응형

mysql 최대 결과 길이 변경하기

 

세팅 값에 따라 부하가 걸릴수도 있으니 고민 고민 후 변경.

 

#PHP
#해당 세션에만 적용됨.
SET SESSION group_concat_max_len = @@max_allowed_packet;

 

#my.ini
#/etc/mysql/my.cnf
# 변경하고자 하는 최대 값 // [mysqld] 하단에 추가 
# GROUP_CONCAT()함수 에 허용되는 최대 결과 길이 (바이트)/기본값은 1024
group_concat_max_len=4M 

적용 후 서비스 재시작 해야 적용 됨.

 

만약 적용 후 서비스 재시작에 문제가 있다면 아래 글 참고.

 

MySQL80 서비스가 로컬 컴퓨터에서 시작했다가 중지되었습니다. 일부 서비스는 다른 서비스 또는 프로그램에서 사용되지 않으면 자동으로 중지됩니다.

 

MySQL80 서비스가 로컬 컴퓨터에서 시작했다가 중지되었습니다. 일부 서비스는 다른 서비스 또는 프로그램에서 사용되지 않으면 자동으로 중지됩니다.

MySQL80 서비스가 로컬 컴퓨터에서 시작했다가 중지되었습니다. 일부 서비스는 다른 서비스 또는 프로그램에서 사용되지 않으면 자동으로 중지됩니다. MYSQL 설정 파일인 my.ini 파일을 메모장으로 수정 후 서비..

dev.uhoon.co.kr

 

https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_group_concat_max_len

 

MySQL :: MySQL 5.7 Reference Manual :: 5.1.7 Server System Variables

 

dev.mysql.com

 

 

댓글()

MySQL80 서비스가 로컬 컴퓨터에서 시작했다가 중지되었습니다. 일부 서비스는 다른 서비스 또는 프로그램에서 사용되지 않으면 자동으로 중지됩니다.

DataBase/My-SQL|2020. 3. 3. 17:23
반응형

서비스 시작 시 에러 메시지

 

 

MySQL80 서비스가 로컬 컴퓨터에서 시작했다가 중지되었습니다. 일부 서비스는 다른 서비스 또는 프로그램에서 사용되지 않으면 자동으로 중지됩니다.

 

MYSQL 설정 파일인 my.ini 파일을 메모장으로 수정 후 서비스 재시작 시 발생한 에러입니다.

 

 

 

원인 : my.ini 파일 인코딩 문제 

 

my.ini 파일 초기 인코딩은 ANSI

확인해보시면 아마도 UTF-8로 변경되어있을텐데

다시 ANSI로 변경 저장 후 서비스 시작하시면 정상 작동 될 것입니다.

댓글()

PHP 보안코딩 - Prepared Statements MYSQL 샘플 소스

Progmming/PHP|2019. 2. 13. 15:35
반응형

Prepared Statements MYSQL 샘플 소스코드

기본적으로 보안을 위해 사용한다고만 알고있었으나 


w3schools 자료를 보면 Prepared Statements 는 3가지 장점을 갖습니다.


  1. 준비된 명령문은 쿼리 준비가 한 번만 수행되므로 구문 분석 시간을 줄입니다 (명령문이 여러 번 실행 되더라도)

  2. 바인딩 된 매개 변수는 전체 쿼리가 아닌 매번 매개 변수 만 보내야하므로 서버 대역폭을 최소화합니다.

  3. Prepared statements는 나중에 다른 프로토콜을 사용하여 전송되는 매개 변수 값이 올바르게 이스케이프 될 필요가 없으므로 SQL injection에 매우 유용합니다. 원래 명령문 템플리트가 외부 입력에서 파생되지 않으면 SQL 삽입이 발생할 수 없습니다.
$dbconn = new mysqli("디비 주소", "아이디", "비번", "디비명");

if ($dbconn->connect_errno) {
    echo "Failed to connect to MySQL: (" . $dbconn->connect_errno . ") " . $dbconn->connect_error;
}

if (!$dbconn->query("DROP TABLE IF EXISTS test") ||
    !$dbconn->query("CREATE TABLE test(id INT, label CHAR(1))") ||
    !$dbconn->query("INSERT INTO test(id, label) VALUES (1, 'a')")) {
    echo "Table creation failed: (" . $dbconn->errno . ") " . $dbconn->error;
}


$stmt = $dbconn->prepare("select a,b,c from tbl where a like CONCAT('%',?,'%') ");
$id = "abc";

$stmt->bind_param('s', $id);
$stmt->execute();

$stmt->bind_result($a, $b, $c);


//$stmt->fetch();  

while ($stmt->fetch()) {
	echo $a ."//".$b."//".$c;
}


$stmt->close();
$dbconn->close();



참고 사이트 : 

https://www.w3schools.com

http://php.net

https://stackoverflow.com

https://ko.wikipedia.org

댓글()