programing

'php app/console dutrin:schema:create'를 실행할 때 "No sheat file or directory" 문제 해결

mailnote 2023. 9. 3. 16:29
반응형

'php app/console dutrin:schema:create'를 실행할 때 "No sheat file or directory" 문제 해결

Symfony2(beta4)와 Doctrine을 처음 사용하여 명령줄을 사용하여 DB 스키마를 작성하려고 할 때 문제가 발생합니다.

오류는 다음과 같습니다.

$ php app/console doctrine:schema:create

Creating database schema...

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

[ErrorException]                                                                                          
Warning: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) 
in /Applications/MAMP/htdocs/sf-test-2/vendor/doctrine-dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php line 36

mysql 데이터베이스 설정이 config/parameters.ini 파일에 올바르게 삽입되었습니다.

다음은 config.yml의 독트린 구성입니다.

# Doctrine Configuration
doctrine:
    dbal:
        driver:   %database_driver%
        host:     %database_host%
        dbname:   %database_name%
        user:     %database_user%
        password: %database_password%

    orm:
        auto_generate_proxy_classes: %kernel.debug%
        auto_mapping: true

그리고 실체(테스트를 위해 하나만 만들었습니다)

<?php
// src/Acme/NewsBundle/Entity/Article.php
namespace Acme\NewsBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="articles")
 */
class Article
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
protected $id;

/**
 * @ORM\Column(type="string", length="255")
 */
protected $title;

/**
 * @ORM\Column(type="text")
 */
protected $body;

/**
 * @ORM\Column(type="string", length="255")
 */
protected $author;

/**
 * @ORM\Column(type="date")
 */
protected $date;
}
?>

방금 저는 비슷한 상황을 겪었습니다. (그러나 다른 맥락에서, 저는 db에서 엔티티를 생성하려고 했습니다.)

간단하게 수정해서 해결했습니다.database_host부터"localhost"로."127.0.0.1"parameters.ini 파일에 있습니다.

내 Mysql 인스턴스는 소켓이 아닌 TCP를 통해서만 실행되고 있다고 생각합니다. 왜냐하면 이것은 사용할 때 사용하기 때문입니다.database_host="localhost"실패합니다.

이 줄을 추가해 보십시오.

unix_socket: /tmp/mysql.sock

비밀번호 줄 바로 뒤에 있는 config.yml 파일 > dutrin > dbal.

app/config/hosts에서 'host'=> 'localhost'를 'host'=> '127.0.0.1'로 변경하였습니다.php 그리고 모든 것이 올바르게 작동하고 있습니다.

저는 이 작은 튜토리얼을 따라 고쳤습니다: http://andreys.info/blog/2007-11-07/configuring-terminal-to-work-with-mamp-mysql-on-leopard

[EDIT]: 올바른 php.ini를 수정했는데 지금은 모든 것이 정상적으로 작동합니다.

이제 다음 오류가 발생합니다.

[Exception]                                                                                            
 DateTime::__construct(): It is not safe to rely on the system's timezone settings.
 You are *required* to use the date.timezone setting or the date_default_timezone_set() function.
 In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier.
 We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead 

여기 php.ini의 date.timezone 구성이 있습니다.

date.timezone = "Europe/Paris"

제가 직접 알아보겠습니다만, 수리 방법을 아시는 분이 계시다면 주저하지 마시고 의견을 말씀해 주십시오.감사합니다!

나에게 문제는mysql.default_socketPHP로 설정합니다.INI는 MySQL이 해당 파일을 실제로 저장하는 위치와는 다른 위치로 기본 설정됩니다.

구성 파일을 편집하는 대신 PHP가 찾는 위치에 실제 mysql.sock에 연결하는 별칭을 만들었습니다.

다음 두 가지 명령만 실행하면 됩니다(다시 시작할 필요 없음).

mkdir /var/mysql
ln -s /tmp/mysql.sock /var/mysql/mysql.sock

때때로 mysql.lock의 위치 경로에 대한 여러 솔루션을 얻을 수 있습니다.하지만 가장 좋은 해결책은 php를 사용하여 mysql의 위치 경로를 보는 것이라고 생각합니다.phpinfo()기능.

참고: 에 익숙하지 않은 경우phpinfo()그런 다음 아무 이름이나 지정하고 다음과 같은 파일의 내용을 포함하는 파일을 만듭니다.

<?php
phpinfo();
?>

이 파일을 실행하고 mysql.lock 파일의 경로를 가져옵니다.도움이 될 것 같습니다.

Mysql도 실행 중인지 확인해 볼 가치가 있습니다.

너무 늦었지만 누군가에게도 도움이 되기를 바랍니다.

Vagrant를 사용하고 있습니다.

바꿔요 ㅠㅠㅠㅠㅠlocalhost127.0.0.1를 AND 포를다변경니다합로로 합니다.3333

완벽하게 작동했습니다.

그냥 mysql을 다시 시작하고, 아파치를 다시 시작하는 것이 저에게 도움이 될 것 같습니다.

mysql을 다시 시작하는 것이 효과가 있었습니다.

sudo /etc/init.d/mysql restart

"SQLSTATE[HY000] [2002] 배포 시 symphony 3.2.9에 "해당 파일 또는 디렉터리 없음"

parameters.yml 파일에서 database_host 값을 "localhost"에서 서버 IP로 변경하여 수정했습니다.

그러나 SSH로 명령줄을 실행하려고 할 때 다음과 같은 오류 메시지가 표시되었습니다.

[교리학\]DBAL\예외\연결예외] 드라이버에서 예외가 발생했습니다. SQLSTATE[HY000] [2002] 연결이 거부되었습니다.

마지막으로 Dutrin 구성 섹션의 config.yml 파일에 다음 두 줄을 추가하여 수정합니다.

unix_socket: /var/lib/mysql/mysql.sock
server_version: '5.5'

나의 모든 마지막 교리 구성은 다음과 같습니다.

doctrine:
    dbal:
        driver: pdo_mysql
        host: '%database_host%'
        port: '%database_port%'
        dbname: '%database_name%'
        user: '%database_user%'
        password: '%database_password%'
        unix_socket: /var/lib/mysql/mysql.sock
        server_version: '5.5'
        charset: UTF8

이것이 도움이 되기를 바랍니다.

laravel.env가 mysql.sock에 대한 경로가 있는 DB_SOCKET을 추가합니다.

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=database
DB_USERNAME=root
DB_PASSWORD=mypassword

DB_SOCKET=/Users/username/Library/Containers/MAMP/mysql/tmp/mysql.sock

또는 PDO에 unix_socket을 추가합니다.

PDO('mysql:host=localhost;port=3306;unix_socket=/Users/username/Library/Containers/MAMP/mysql/tmp/mysql.sock', root, mypassword);

언급URL : https://stackoverflow.com/questions/6259424/troubleshooting-no-such-file-or-directory-when-running-php-app-console-doctri

반응형