source

Mac php 장인 마이그레이션 오류에서 Larabel 설정:해당 파일 또는 디렉터리가 없습니다.

factcode 2022. 10. 23. 09:58
반응형

Mac php 장인 마이그레이션 오류에서 Larabel 설정:해당 파일 또는 디렉터리가 없습니다.

  1. Git에서 MAMP를 실행하는 Mac으로 완벽하게 작동하는 라라벨 프로젝트를 가져왔습니다. 프로젝트는 Linux 머신에서 완벽하게 실행되었습니다.
  2. 컴포저 설치
  3. php 장인의 이행으로 다음 오류가 발생하였습니다.

    [PDOException]                                    
    SQLSTATE[HY000] [2002] No such file or directory 
    

NB: php - v는 5.5, mysql - v는 5.5 입니다.이것은 제 설정/데이터베이스의 일부입니다.php

    'mysql' => array(
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'essays',
        'username'  => 'root',
        'password'  => 'root',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

localhost를 127.0.0.1로 교체하려고 했지만 사용할 수 없었습니다.제발 도와주세요..

편집: 이 세 줄을 php.ini에 추가했습니다.

mysql.default_socket = /var/run/mysqld/mysqld.sock

mysqli.default_socket = /var/run/mysqld/mysqld.sock

pdo_mysql.default_socket = /var/run/mysqld/mysqld.sock

다음 심볼 링크도 추가했습니다.

sudo mkdir /var/mysql
cd /var/mysql && sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock

하지만 그것은 해결되지 않았다.또한 git에서 새로운 라라벨 프로젝트를 가져와서 같은 오류가 발생하였습니다.composer install그리고나서php artisan migrate

 [PDOException]                                    
  SQLSTATE[HY000] [2002] No such file or directory 

Mac 버전은 10.7.4 입니다.

MAMP 를 사용하는 경우는, 반드시,unix_socket키와 패스 값이 일치시킵니다.mysql.sock는 MAMP에 존재합니다.

'mysql' => array(
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'unix_socket'   => '/Applications/MAMP/tmp/mysql/mysql.sock',
        'database'  => 'database',
        'username'  => 'root',
        'password'  => 'root',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

unix_socket이 서로 다르다고 생각하지 말고 찾아보세요.

먼저 unix_socket 위치를 확인합니다.

$ mysql -uroot -p

mysql 비밀번호를 입력하고 명령줄에서 mysql 서버에 로그인합니다.

mysql> show variables like '%sock%';
+---------------+---------------------------------------+
| Variable_name | Value                                 |
+---------------+---------------------------------------+
| socket        | /opt/local/var/run/mysql5/mysqld.sock |
+---------------+---------------------------------------+

unix_socket은 다를 수 있습니다.

그러면 문제를 해결할 수 있는 두 가지 솔루션이 있습니다.

(1) 고객님의config/database.php

    'mysql' => array(
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'essays',
    'username'  => 'root',
    'password'  => 'root',
    'unix_socket'   => '/opt/local/var/run/mysql5/mysqld.sock', //Your sock got from above
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
),

(2) php.ini를 변경하여 다음 파일을 찾습니다.php.ini에서 줄서다.

<? phpinfo();

여러 버전의 php를 설치할 수 있으므로 php.ini 파일 위치를 추측하지 말고 phpinfo에서 가져오십시오.

php.ini를 변경합니다.

mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock

mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock

pdo_mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock

그런 다음 apache 또는 php-fpm을 재시작합니다.

똑같은 문제가 있었는데 지금은 잘 되고 있어요

문제가 해결되지 않는 경우는, 다음과 같이 시험해 주세요.

  • 다음 사항을 확인합니다.bootstrap/start.php에는, 가상 호스트의 이름이 아니고, 실제의 호스트명이 포함되어 있습니다.를 입력하십시오.hostname터미널에서 호스트 이름을 가져옵니다.어레이이므로 호스트 이름과 가상 호스트의 이름을 모두 입력할 수 있습니다.
  • "localhost"를 "127.0.0.1"로 바꿉니다.

XAMPP 를 사용하고 있는 경우, 솔루션은 다음과 같습니다.

'mysql' => array(
        'driver'      => 'mysql',
        'unix_socket' => '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock',
        'host'        => 'localhost'
)

Larabel 5.0에서는 이 방법이 적용되며 .env 파일에서 DB_HOST=132.0.0.1:33060을 변경합니다.

다른 답변은 작동하지 않습니다.

Larabel 5.1.11 버전 + MAC + MAMPP를 사용하는 경우

파일 "yourapp"/app/config/database에 "Unix_socket"을 추가해야 합니다.php

'mysql' => [
    'driver'    => 'mysql',
    'host'      => env('DB_HOST', 'localhost'),
    'unix_socket'   => '/Applications/MAMP/tmp/mysql/mysql.sock',
    'database'  => env('DB_DATABASE', 'forge'),
    'username'  => env('DB_USERNAME', 'forge'),
    'password'  => env('DB_PASSWORD', ''),
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
    'strict'    => false,
],

위의 mysql 구성 드라이브에 Unix_socket 파라미터가 추가되었습니다.

5.0의 경우 Larabel 5.0+를 localhost로로 합니다.127.0.0.1Unix Sockets .env.

Noobs 주의:Larabel 5를 사용하거나 오래된 학습 자료를 사용하는 사용자는 이전 버전과 상당히 다른 폴더 구조가 있음을 유의하십시오.이 문서는 https://mattstauffer.co/blog/laravel-5.0-directory-structure-and-namespace에서 확인할 수 있습니다.

또 다른 해결책은 호스트 키에 포트 번호를 추가하는 것입니다.이 경우 MAMP는 기본적으로 8889를 사용합니다.

'mysql' => array(
    'driver'    => 'mysql',
    'host'      => 'localhost:8889',
    'database'  => 'essays',
    'username'  => 'root',
    'password'  => 'root',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
),

언급URL : https://stackoverflow.com/questions/19475762/setting-up-laravel-on-a-mac-php-artisan-migrate-error-no-such-file-or-directory

반응형