programing

XAMPP - 오류:MySQL이 예기치 않게 종료됨

goodsources 2023. 10. 8. 09:50
반응형

XAMPP - 오류:MySQL이 예기치 않게 종료됨

어떤 이유로 XAMPP를 다시 설치했는데 MySQL이 작동하지 않아 콘솔에 다음과 같은 오류가 발생합니다.

01:56:03  [mysql]   Error: MySQL shutdown unexpectedly.
01:56:03  [mysql]   This may be due to a blocked port, missing dependencies, 
01:56:03  [mysql]   improper privileges, a crash, or a shutdown by another method.
01:56:03  [mysql]   Check the "/xampp/mysql/data/mysql_error.log" file
01:56:03  [mysql]   and the Windows Event Viewer for more clues

"/xampp/mysql/data/mysql_error.log" 파일을 확인하면 다음과 같이 표시됩니다.

130302  1:48:06  InnoDB: Waiting for the background threads to start
130302  1:48:07 InnoDB: 1.1.8 started; log sequence number 1600324627
130302  1:48:07 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
130302  1:48:07 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
130302  1:48:07 [Note] Server socket created on IP: '0.0.0.0'.
130302  1:51:12 [Note] Plugin 'FEDERATED' is disabled.
130302  1:51:12 InnoDB: The InnoDB memory heap is disabled
130302  1:51:12 InnoDB: Mutexes and rw_locks use Windows interlocked functions
130302  1:51:12 InnoDB: Compressed tables use zlib 1.2.3
130302  1:51:12 InnoDB: Initializing buffer pool, size = 16.0M
130302  1:51:12 InnoDB: Completed initialization of buffer pool
130302  1:51:12 InnoDB: highest supported file format is Barracuda.
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
130302  1:51:12  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
130302  1:51:13  InnoDB: Waiting for the background threads to start
130302  1:51:14 InnoDB: 1.1.8 started; log sequence number 1600324627
130302  1:51:14 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
130302  1:51:14 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
130302  1:51:14 [Note] Server socket created on IP: '0.0.0.0'.
130302  1:56:01 [Note] Plugin 'FEDERATED' is disabled.
130302  1:56:01 InnoDB: The InnoDB memory heap is disabled
130302  1:56:01 InnoDB: Mutexes and rw_locks use Windows interlocked functions
130302  1:56:01 InnoDB: Compressed tables use zlib 1.2.3
130302  1:56:01 InnoDB: Initializing buffer pool, size = 16.0M
130302  1:56:01 InnoDB: Completed initialization of buffer pool
130302  1:56:01 InnoDB: highest supported file format is Barracuda.
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
130302  1:56:01  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
130302  1:56:02  InnoDB: Waiting for the background threads to start
130302  1:56:03 InnoDB: 1.1.8 started; log sequence number 1600324627
130302  1:56:03 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
130302  1:56:03 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
130302  1:56:03 [Note] Server socket created on IP: '0.0.0.0'.

그것은 로그의 일부일 뿐입니다, 전체가 너무 큽니다.

도와줘요?

작업을 수행하기 전에 언급된 폴더를 백업해야 합니다!

이게 내겐 통했어요

  1. XAMPP 종료
  2. C:\xampp\mysql\backup의 모든 파일 잘라내기
  3. 파일을 C:\xampp\mysql\data에 붙여넣기 및 바꾸기
  4. XAMPP를 관리자로 실행

제 경우에는 두 가지 일을 했습니다.

  1. xampp/mysql/backups에 넣다xampp/mysql/data
  2. 관리자로서 XAMPP 실행

저한테는 통했어요 :)


편집:

중요: 백업 복사본을 만듭니다.xampp/mysql/data이 방법을 시도하기 전에 백업 폴더가 데이터 폴더와 동기화되지 않으면(흔히 그런 경우) 해당 데이터를 백업 폴더와 덮어쓰게 되고 테이블이 손실됩니다.

먼저 하드 디스크 어딘가에 있는 팔로우의 복사본을 보관해야 합니다.

C:\xampp\mysql\백업

C:\xampp\mysql\data

그후

에 있는 을 복사한 후 "C:"로합니다.\xampp\mysql\backup"의 모든 내용을 복사한 후 붙여넣고 교체합니다.
"C:\xampp\mysql\data"

이제 당신의 mysql은 phpmyadmin에서 작동하지만 테이블에는 "Table not found in engine"이라고 표시됩니다.

이를 위해서는 하드 디스크와 데이터 폴더 복사본 "ibdata1" 파일에 생성된 "백업 및 데이터 폴더"의 복사본으로 이동하고 "C:\xampp\mysql\data"에서 대체해야 합니다.

이제 테이블 데이터를 사용할 수 있습니다.

조심!ibdata1 파일 삭제하지 마세요!

이 단계만 수행하면 완료됩니다.

  1. 이름 C:\xampp\mysql\data.C:\xampp\mysql\data_old이나 사용 능)
  2. C:\xampp\mysql\data
  3. 에 있는 C:\xampp\mysql\backupo으로C:\xampp\mysql\data
  4. 의 합니다.C:\xampp\mysql\data_old.C:\xampp\mysql\datap합니다l를 들어 performance및 phpmyadmin를 스킵다).C:\xampp\mysql\data_old)
  5. 으로 으로 ibdata1 합니다.C:\xampp\mysql\data_old합니다 합니다.C:\xampp\mysql\data
  6. 이제 XAMPP 제어판에서 MySQL 시작

그리고 다 끝났어요, 즐기세요...

스카이프가 열려 있으면 스카이프를 그만두고 시도해보세요.

아니면

설치된 xampp/wamp로 이동하여 httpd.conf를 검색합니다.텍스트 패드/노트 패드를 사용하여 해당 파일을 열고 Listen 또는 80을 검색한 후 Listen 포트를 8081로 업데이트하고 파일을 저장합니다.xampp/wamp를 다시 시작하고 서버를 시작합니다.


아니면
다에서 .enter image description here

  1. mysql/data 폴더 이름을 mysql/data_old로 변경합니다(어떤 이름이든 사용 가능).
  2. 새 폴더 mysql/data 생성mysql/backup에 있는 내용을 새 mysql/data 폴더에 복사합니다.
  3. mysql/data_old에 있는 모든 데이터베이스 폴더를 mysql/data에 복사합니다(data_old에서 mysql, performance_schema 및 phpmyadmin 폴더를 건너뜁니다).
  4. 마지막으로 mysql/data_old에서 ibdata1 파일을 복사하여 mysql/data 폴더 안에 대체합니다.
  5. XAMPP 제어판에서 MySQL 시작

Apache가 아무런 문제 없이 실행되고 있고 시스템 보안 설정에 의해 일부 차단된 경우 대화 상자를 차단하거나 닫는 대신 허용하기만 하면 됩니다.그리고 MySQL의 포트 번호를 3606 이전과 같이 3607로 변경합니다.그것은 나에게 효과가 있었다.

이 문제를 해결하기 위해서,

XAMPP 폴더로 이동합니다.

XAMPP -> mysql -> bin -> "my.ini"

my.ini일 ,,3306와 함께3308몇 서 말이죠,3308자유항입니다.

XAMPP -> php -> "php.ini"

하는 "my.ini" 합니다를 합니다.3306.3308.

그런 다음 XAMPP 서버를 다시 시작합니다.

잘 작동합니다.

당신의 컴퓨터에 이전에 설치된 MySQL 서버가 있을 수도 있습니다. 그것을 제거하고 XAMPP에서 MySQL을 시작해보세요. 이것은 내 것을 해결했습니다.

진정한 방법은 앱을 재구성하는 것입니다.MYSQL의 setup을 통해 다시 setup을 열고 포트를 3306에서 3307로 변경할 수 있습니다.

enter image description here

제 경우에는 C:\xampp\mysql\data로 이동하여 모든 파일(폴더가 아닌)을 삭제하고 ibdata1 my.ini는 유지해야 했습니다.XAMPP를 다시 시작합니다. 모든 것이 다시 실행됩니다.

그것이 누군가에게 도움이 되기를 바랍니다 - 그것을 찾기 전에 몇 시간 동안 찾아야만 했습니다!

그냥 XAMPP 재설치를 시도해 보겠습니다.

제가 찾은 한 가지 이유는 (유사한 문제에 대해 이 사이트에 제공된 다른 답변 외에 언급되지 않았습니다) 창에 있는 작업 관리자에게 가서 이미 실행 중이고 mysqld를 중지하여 mysqld 서버가 시작되지 않도록 했기 때문입니다.

다음을 수행해야 합니다.

  • xampp 닫기
  • (c:)에 C:\xampp\, 액세스 폴더 C:\xampp\mysql\data와 같은 경우 설치한 폴더로 이동합니다.
  • ibdata1 파일 삭제
  • XAMPP를 다시 시작합니다.

이 문제를 해결하는 가장 좋은 방법은 폴더 C:\xampp\mysql\bin 안에 있는 mysql configuration directive file my.ini를 열고 포트와 관련된 정보를 변경하는 것입니다. 일반적으로 일부 프로그램은 작동을 중지한 결과 포트 번호 3306을 차지합니다. 이제 작동을 하려면 두 단계를 따릅니다.

enter code here

    Step-1. Search for ['client'],  you can see some thing like this

            [client] 
            # password       = your_password 
            port            = 3306
            socket          = "C:/xampp/mysql/mysql.sock"
 Now in the port section remove 3306 and add port = 3306 > 3307 as shown   below.

            [client] 
            # password       = your_password 
            port            = 3306 > 3307
            socket          = "C:/xampp/mysql/mysql.sock"


    Step -2. Similarly Search for  ['mysqld'], you can see something like this 

            [mysqld]
            port= 3306
            socket = "C:/xampp/mysql/mysql.sock"
            basedir = "C:/xampp/mysql" 
            tmpdir = "C:/xampp/tmp" 
            datadir = "C:/xampp/mysql/data"
            pid_file = "mysql.pid"
            # enable-named-pipe
            key_buffer = 16M
            max_allowed_packet = 1M
            sort_buffer_size = 512K
            net_buffer_length = 8K
            read_buffer_size = 256K
            read_rnd_buffer_size = 512K
            myisam_sort_buffer_size = 8M
            log_error = "mysql_error.log"


            Now here change the port number 3306 to 3307 and add a line "innodb_force_recovery = 1" exactly as shown below.


            [mysqld]
            port= 3307
            socket = "C:/xampp/mysql/mysql.sock"
            basedir = "C:/xampp/mysql" 
            tmpdir = "C:/xampp/tmp" 
            datadir = "C:/xampp/mysql/data"
            pid_file = "mysql.pid"
            # enable-named-pipe
            key_buffer = 16M
            max_allowed_packet = 1M
            sort_buffer_size = 512K
            net_buffer_length = 8K
            read_buffer_size = 256K
            read_rnd_buffer_size = 512K
            myisam_sort_buffer_size = 8M
            log_error = "mysql_error.log"
            innodb_force_recovery = 1

그게 다야, 너의 mysql 서비스를 다시 시작해, 그것은 확실히 작동할 것입니다.

이 링크를 검색하고 눌러주신 모든 분들께는 단순히 mysql notifier를 검색하여 mysql이 실행되지 않게 한 후 xampp에서 mysql을 다시 실행하면 실행됩니다.이것이 작동하는 이유는 무엇입니까? 저는 전문가는 아니지만 쉬운 것 같습니다. 포트는 이미 mysql 알림에 의해 사용되었기 때문에 여기서 중지하고 여기서 실행해야 했습니다.

XAMPP가 처음이지만 이 제안의 조합이 가장 잘 작동한다는 것을 알게 되었습니다(최소한 최신 버전의 XAMPP가 설치된 Windows 8.1에서는). 이를 테스트한 컴퓨터에도 스카이프가 있습니다.

먼저 skype에 로그온하고 "Tools < Options < Advanced < Connection"으로 이동합니다.그런 다음 "추가 수신 연결을 위해 포트 80 및 443 사용"이라고 표시된 상자를 선택합니다.저장하고 닫고 스카이프를 종료합니다.

그런 다음 XAMPP 제어판에서 "config < my.ini"를 클릭하고 19번과 27번 라인(포트 = 3306이어야 함)을 "3306"에서 "3307"로 변경합니다.

또한 xampp < phpMyAdmin < config.inc로 이동하여 27행을 변경해야 합니다. 이는 다음과 같습니다.

$cfg['서버'][$i]['호스트'] = '127.0.0.1';

다음과 같이 "3307"을 추가해야 합니다.

$cfg['서버'][$i]['호스트'] = '127.0.0.1:3307';

이제 브라우저를 열고 "localhost"를 입력하면 xampp 페이지가 나타납니다.또한 xampp를 처음 사용하는 경우 localhost/phpmyadmin/페이지에 암호 부족(분홍색으로 강조 표시)에 대한 경고가 표시될 수 있습니다.phpmyadmin의 "사용자 계정" 탭으로 이동하여 "편집 권한"을 클릭하고 비밀번호를 입력하면 쉽게 해결할 수 있습니다.사용자가 만든 모든 암호의 해시 버전을 저장해야 합니다. 다음에 사용할 암호입니다. - 메모장을 열고 저장(번호를 지정)했습니다.현재 세션의 암호를 변경할 때 phpMyadmin이 알려줍니다(이는 phpMyadmin 페이지 상단에 표시되며 특정 해시 버전의 암호가 필요하므로 매우 중요합니다).

그런 다음 컴퓨터의 다음 위치 "xampp < phpMyAdmin < config.inc"로 이동하고 텍스트 편집기로 파일을 열고 편집해야 합니다.암호의 작은 따옴표 사이에 해시 버전의 암호를 넣고 "비밀번호 허용 안 함"을 true에서 false로 변경합니다.

그리고, 그렇게 해야 합니다.

내 경우: 방금 교체했습니다.

....xampp/mysql/backup files 

안으로

**xampp/mysql/data**

그것은 나에게 효과가 있었다.

만약 당신이 mysql을 독립적으로 설치했다면 당신은 mysql 서비스를 중단할 수 있습니다. 만약 이 답변들 중 어느 것도 나를 위해 작동하지 않는다면 나를 위해 이 일을 할 수 있습니다.

음, 첫째로, 나는 늦었다는 것을 알고 있기 때문에 누군가가 그것을 지지할지 모르겠지만 오 음, 괜찮아, 둘째로, xampp를 제거하는 것은 포트 3306(Myql의 기본 포트)을 사용하는 프로세스가 여전히 시스템의 어딘가에서 실행될 것이기 때문에 당신에게 전혀 도움이 되지 않을 수 있습니다.스카이프일 수도 있지만 스카이프가 아닐 수도 있습니다.

따라서 가장 좋은 방법은 포트 3306을 사용하는 프로세스를 파악한 후 프로세스를 종료하는 것입니다.

포트 3306을 사용하는 프로세스를 확인하려면 명령 프롬프트를 열고 입력합니다.

netstat -n -o -a

이런 화면이 나올 겁니다.

그러면 포트 번호 3306의 주소를 찾아보고 그에 해당하는 PID를 찾아보세요.

그런 다음 관리자로서 명령 프롬프트를 열고 입력하기만 하면 됩니다.

taskkill /F /PID 1234

1234를 각각의 PID로 대체합니다.그러면 mysql을 시작해보면 될 것입니다.


그리고 컴퓨터를 다시 시작할 때 이 단계를 처음부터 다시 시작하는 것이 귀찮다면,

아래 배치스크립트를 이용하여 자동으로 종료 후 즐기실 수 있습니다 :)

@echo off
setlocal enableextensions
set "port=3306"
for /f "tokens=1,4,5" %%a in (
    'netstat -aon ^| findstr /r /c:"[TU][CD]P[^[]*\[::\]:%port%"'
) do if "%%a"=="UDP" (taskkill /F /PID %%b) else (taskkill /f /PID %%c)
endlocal
pause

아무렇게나 저장.배트해서 mysql을 사용하고 싶을때마다 실행합니다. :)


** -> "xampp-> mysql->data" 데이터 폴더의 모든 파일을 잘라내 다른 폴더에 붙여넣기

-> 이제 mysql을 다시 시작합니다.

-> 폴더의 모든 폴더를 myslq->data 폴더에 붙여넣기

또한 ib_logfile0.ib_logfile1,ibdata1을 폴더의 데이터 폴더에 붙여넣습니다.

당신의 데이터베이스와 당신의 데이터는 이제 phpmyadmin에서 이용할 수 있습니다.**

모든 방법을 다 해봤지만 완벽한 해결책을 찾지 못했습니다!

  • Xampp 대신 Laragon을 설치해라, 당신은 나를 위해 기도할 것입니다.
  1. 폴더 이름을 C:\xampp\mysql\data로 C:\xampp\mysql\data_old로 변경합니다(모든 이름을 사용할 수 있습니다).
  2. 새 폴더 C:\xampp\mysql\data 만들기
  3. C:\xampp\mysql\backup에 있는 내용을 새 C:\xampp\mysql\data 폴더에 복사합니다.
  4. C:\xampp\mysql\data_old에 있는 모든 데이터베이스 폴더를 C:\xampp\mysql\data에 복사합니다(C:\xampp\mysql\data_old에서 mysql, performance_schema 및 phpmyadmin 폴더를 건너뜁니다).
  5. 마지막으로 ibdata1 파일을 C:\xampp\mysql\data_old에서 복사하여 C:\xampp\mysql\data 폴더 안에 대체합니다.

이제 XAMPP 제어판에서 MySQL 시작

이게 도움이 돼요!!

관리자로서 xammp를 실행하면 됩니다.

언급URL : https://stackoverflow.com/questions/15169861/xampp-error-mysql-shutdown-unexpectedly

반응형