EtoC

ERROR! The server quit without updating PID file 본문

ETC/Error

ERROR! The server quit without updating PID file

게리드 2024. 6. 7. 19:38

JPA의 기본적인 사용법을 공부하면서 POST 요청을 보냈는데 mysql에서 에러가 난다고 떴다.

팀원이 mysql을 켜지않은거 아니냐고해서  '그럴리가..'라며 서버를 다시 켜봄.

mysql.server start

근데 아래와 같은 오류가 발생하였다.

./opt/anaconda3/bin/mysqld_safe: line 647: /opt/anaconda3/data/Kims-2.local.err: Permission denied
Logging to '/opt/anaconda3/data/Kims-2.local.err'.
The server quit without updating PID file

PID가 업데이트 되지않은채 서버가 종료됬다는게 무슨말이지..?
kill -9 pid로 사용중인 mysql을 종료해봤는데 종료가 안된다;;
찾아보니 mysql이 시스템 관리자에의해 관리되고있기때문에 자동으로 재시작된다는 말이 유력해보였다.

아래의 명령어를 입력하여  brew로 서비스 관리자가 mysql 서버를 중지하도록 하였다.

이러면 mysql 서버가 모든 연결을 정리하고, 모든 데이터를 디스크에 기록한 후 종료되기때문에 자동으로 재시작 되지 않는다.

brew services stop mysql

고 했는데

여전히 같은 문제가 발생했다.
다시 mysql 서버를 실행시키려하니 에러가 뜸..

Password:
Warning: Taking root:admin ownership of some mysql paths:
  /opt/homebrew/Cellar/mysql/8.3.0_1/bin
  /opt/homebrew/Cellar/mysql/8.3.0_1/bin/mysqld_safe
  /opt/homebrew/opt/mysql
  /opt/homebrew/opt/mysql/bin
  /opt/homebrew/var/homebrew/linked/mysql
This will require manual removal of these paths using `sudo rm` on
brew upgrade/reinstall/uninstall.
Warning: mysql must be run as non-root to start at user login!
Bootstrap failed: 5: Input/output error
Error: Failure while executing; `/bin/launchctl bootstrap system /Library/LaunchDaemons/homebrew.mxcl.mysql.plist` exited with 5.

 

권한을 재설정해하고 다시 실행하니 서버가 켜졌다.

sudo chown -R $(whoami) /opt/homebrew/Cellar/mysql/8.3.0_1/bin
sudo chown -R $(whoami) /opt/homebrew/opt/mysql
sudo chown -R $(whoami) /opt/homebrew/var/homebrew/linked/mysql

sudo brew services start mysql

 


그치  서버는 켜졌지...

 

 

멍하니 바라보게되는 에러창
정말 의아하다 2년째 mysql이 잘 쓰고있는데 왜 mysql.server start 명령어가 실행이안되는걸까?
에러를 다시 읽어보니 mysql 경로가 달라서거나 권한이 없어서 생기는 오류같다.

혹시나 싶어 mysql 을 다시설치해보니 이미 8.3.0 버전이 설치되어있다고 뜬다.
mysql버전을 다시 확인해보니 설치되었다고 뜬 버전과 다르게 떴다.

mysql --version
mysql  Ver 14.14 Distrib 5.7.24, for osx11.1 (x86_64) using  EditLine wrapper

//mysql Ver 14.14는 서버와 상호작용하기위해 사용되는 도구로 클라이언트 프로그램 자체 버전.  
//Distrib 5.7.24는 mysql 서버의 버전.

 

무언가 이상하다.
homebrew로 설치했으면 있어야할 경로에 mysql 폴더도 없기에 경로를 검색해봄

 

 

아나콘다..? 이번년에 설치했는데 뭔가 꼬인듯하다.
뭔가 지우기에는 지금까지한 데이터들이 있어서 지우고싶지않은데
로컬에 새로운 계정을 만들어서 연동하면 되지않을까?

 

CREATE USER 'root'@'%' IDENTIFIED BY 'root';
Query OK, 0 rows affected (0.02 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'roor'@'%' WITH GRANT OPTION;
ERROR 1410 (42000): You are not allowed to create a user with GRANT
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
Query OK, 0 rows affected (0.01 sec)

mysql> CREATE USER 'kimsu'@'localhost' IDENTIFIED BY 'kimsu';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'kimsu'@'localhost';
Query OK, 0 rows affected (0.01 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> DROP USER 'root'@'%';
Query OK, 0 rows affected (0.01 sec)

 

안되네..
여전히 같은 오류는 발생했지만 db connection test가 success로 바뀌었다.
뭔가 알거같은데 안되는 이 느낌..어떻게 해야하는거지..

 

can't connect The server quit without updating PID file
onnect to local mysql server through socket '/tmp/mysql.sock'

 

다시 검색해보니 위 오류는 conda가상환경에 설치해서 발생하는 오류라고한다.
어쩐지 /usr/local/var/mysql/ 경로에 mysql 폴더 자체가 없더라니..
아나콘다 환경에서 mysql 을 사용해보려고 초기화도 해보고 경로도 설정해봤짐나 같은 오류가 계속 발생한다.

하루간 찾아본 글들의 모든 시도를 해봤는데 모두 먹히지않았다.

결국 삭제하고 재설치가 답인걸까

MySQL 삭제 후 재설치

우선 mysql 서버를 꺼주고 경로를 찾아서 폴더를 삭제한후 brew를 사용해서 mysql을 삭제하였다

// 1
brew services stop mysql

// 2
which mysql

// 3 
// 내경우 아나콘다의 내부에 설치된 mysql을 지움
conda remove mysql
rm -rf 경로/mysql

// 4 
brew install mysql

 

하지만 역시 한번에 되는일이 없지 xcode를설치해주자
허..이것들다 옛날에 했었는데..

 

Error: No developer tools installed.
Install the Command Line Tools:
  xcode-select --install

 

터미널에 나온대로 명령어를쳐서 xcode-select --install을 하니 설치창이 하나 떴다.

오랜만에 brew upgrade도 하고 다시 mysql을 설치하니 드디어 내가 원하는 경로가 나타났다

 

 

드디어 mysql.server start 명령어도 성공하고..

mysql.server status
 SUCCESS! MySQL running (48247)

 

역시 안될때는 삭제 재설치가 제일 빠른 방법같다.

mysql을 실행하니 아래와같은 알림이떴는데

 

 

애플의 설정페이지에서 설정하면 껐다켰다 할 수 있다.

 


그럼 이제 JPA가 잘 작동하겠지?

java.lang.NullPointerException: Cannot invoke "org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(java.sql.SQLException, String)" because the return value of "org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.sqlExceptionHelper()" is null

 

ㅎ..왜 null이 뜬다고 하지 뭔가 잘못적었나
db properties에들어가 확인해보니 세미콜론;;;;

자바스크립트 ; 안붙였던 습관 아주 나쁜 습관;;

spring.datasource.url=jdbc:mysql://localhost:3306/whoduck;
spring.datasource.username=root
spring.datasource.password=비밀번호
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

 

으아 드디어 아무에러없이 잘뜬ㄷ ㅏㅠㅠ