목록DataBase (17)
Knowledge Map
pymysql 을 이용해서 mysql에 접속한다.brew를 update 한 다음에 mysql를 설치해보면 mysql 8이 설치가 된다.pymysql 최신 버전의 경우 mysql8을 지원해주는 것을 확인할 수 있다. 하지만 정작 접속하려고 하면 1045 에러를 만나게 될 것이다. pymysql.err.OperationalError: (1045, u"Access denied for user 'root'@'localhost' (using password: YES)") 이건 쉽게 말하면 비번이 맞지 않아서 그런 것인데, 검색해보면 전부 grant 에서 권한을 다 허용하라는 식으로 나올 것이다.그렇게 해서 잘 되면 다행인데, 그렇게 하고나서도 안되는 경우가 있다. 그이유는 mysql 8에서는 기본적으로 sha2로..
[ ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' ] 위의 에러 때문에 얼마나 삽질을 했는지 모르겠다. 혼자 끙끙 거리면서 몇시간을 고생하다가 겨우 풀어서 남겨 놓는다. 일단 처음의 문제는 비밀번호를 설정했다가 잊어버려서 다시 비밀번호를 세팅한 것부터가 시작이었다.그리고 난뒤에 다음날 재접을 해보니 에러가 나서 그냥 별생각 없이 mysql를 삭제하였다. https://gist.github.com/vitorbritto/0555879fe4414d18569d 위의 주소를 참고해서 삭제를 진행했다.그리고 나서 다시 brew install mysql를 실행했고 mysql.server start를 했더니..
mysql은 시퀀스(sequence)가 존재하지 않는다. 오라클에서는 시퀀스를 이용해서 여러가지를 하는데, 그 중 하나가 게시판에서의 번호 매기기이다. 오라클에서는 시퀀스를 만든다음에 해당 시퀀스의 nextval, currval를 이용해서 테이블에 데이터를 넣을수 있지만 mysql은 그렇지가 못하다. 이것을 보완하기 위해 시퀀스 역할을 하는 테이블을 하나 만드는 경우도 있다. 아래는 auto_increment와 select문을 이용해서 시퀀스의 nextval , currval을 대신하는 쿼리문이다. 참고로 해당 테이블의 인덱스는 index로 되어있으며 옵션으로 auto_increment가 설정되어 있다. 123insert table tablename( name, title, content, bHit, b..
mariaDB에서 DBdump를 뜬다음 다른 자리에서 import를 시도했더니 아래와 같은 에러메세지가 떴다. MySQL 메시지: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'page_start_number, page_size; WHEN 2 THEN SELECT device' at line 14 이것을 보고 잘 이해가 가지 않았다. 그냥 마리아DB에서 그대로 덤프해서 가져오는건데 왜 에러가 나지?일단 일반적인 쿼리이지만, 프로시저가 포함되어 있어서 약간 다르게 작동하는거 같았다.해결책은 이러하다...
latin1의 경우 order by를 쓰더라도 한글이 제대로 정렬이 안되는 경우가 있다.이럴때에는 order by binary(컬럼명) 이렇게 쓰면 제대로 정렬이 된다.
출처https://opentutorials.org/course/195/1409 http://rapapa.net/?p=311 이 그림 하나로 설명이 가능하다. 생활코딩의 테스트 데이터 DROP TABLE IF EXISTS `student`;CREATE TABLE `student` ( `id` tinyint(4) NOT NULL, `name` char(4) NOT NULL, `sex` enum('남자','여자') NOT NULL, `location_id` tinyint(4) NOT NULL, `birthday` datetime NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8; DROP TABLE IF EXISTS `location`;CREA..
한동안 DB 데이터 문자셋 변환을 어떻게 해야하는지 몰라서 고생을 좀했다. 이미 알고 있었던 건데 마음이 급해서 생각이 안난거 보면 참 웃음만 나온다. DB의 인코딩 상태 알기 show variables like 'c%' 각 테이블의 문자셋을 알고자 할때 show full columns from yourtable 일단 latin1 -> utf8로 변환하는 것을 해봤기 때문에 이것에 대해서만 써볼려고 한다.먼저 변환하려고 하는 DB 데이터를 export 한다. mysqldump -u root -p --default-character-set=laint1 myDB > myDB_0620.sql 굳이 뒤에 default character set을 붙이는 이유는 간혹 테이블 인코딩은 latin1인데 DB 인코딩은 ..
출처 :https://www.lesstif.com/pages/viewpage.action?pageId=17105743 http://ra2kstar.tistory.com/97http://www.unclecho.com/bbs/board.php?bo_table=mysql&wr_id=12 http://kwonnam.pe.kr/wiki/database/mysql/charset 문자셋 확인show variables like 'c%'; 그외 다른 설정값 확인show variables like 'a%';show variables; 테이블 문자셋 확인show full columns from yourtable; DB 설정 상태 보기show variables like '알파벳%' DB 의 연결된 스레드 보기show proc..
출처 : mysqlkorea.com Convert()는 서로 다른 인코딩으로 되어 있는 데이터를 변환한다. Convert ( 대상 USING 변환하려는 인코딩 이름)예를 들자면 convert (name using utf8) 이런 방식으로 변환하면 된다. 문자열을 다른 문자 인코딩으로 변환하기 위한 방법은 CAST( )도 있다고 한다.CAST (character_string AS character_data_type CHARACTER SET charset_name ) CHARACTER SET 을 지정하지 않은 채로 CAST()를 사용한다면 결과 값은 character_set_connection 과 collation_connection 시스템 변수에 의해 정의된다고 한다. 만일 cast() 를 CHARACTE..
어제 mysql을 이용해서 페이지네이션과 rownum을 붙이는 것을 했었다. ㅇ 되는 소스 123select (@rownum:=@rownum+1) as number, id, name, date from testTable, (select @rownum:=0) as v where id ='tester123' order by number desc;cs 참고로 했던 여러 소스가 있었는데 그중에는 ㅇ 안되는 소스 123select (@rownum:=@rownum+1) as number, id, name, date from testTable where (@rownum:=0)=0 and id ='tester123' order by number desc;cs 이런 소스도 있었다. 맨처음에 '안되는 소스' 로 해보았었다..