簡體   English   中英

在Laravel中,與套接字的DB連接被拒絕

[英]Connection to DB with socket refused in Laravel

我知道SO和Google上有很多關於這個問題的點擊,但我似乎還有一個獨特的問題。

錯誤消息:SQLSTATE [HY000] [2002]連接被拒絕

組態

    'mysql' => array(
        'driver'    => 'mysql',
        "host"      => "localhost:/var/run/mysqld4.sock",
        'port'      => '3304',
        "username"  => "admin",
        "password"  => "admin",
        "database"  => "frontend_generic",
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => 'pre_',
    ),

我確認我的數據庫在端口3304上運行,我的前綴是正確的,用戶,數據庫和密碼也是如此。

對於主機我嘗試了“localhost”,“127.0.0.1”,“ http://127.0.0.1 ”甚至是服務器的實際ip地址。

但是,沒有運氣或改變。 我嘗試在本地database.php文件中使用完全相同的配置,但正如預期的那樣,沒有任何更改。

出於選擇,我在這里缺少什么?

更新:

這是來自與此配置一起使用的其他應用的代碼。 這是Kohana,而不是Laravel,但它有效。

 "general" => array
        (
            "type"       => "mysql",
            "connection" => array
            (
                "hostname"   => "localhost:/var/run/mysqld4.sock",
                "username"   => "admin",
                "password"   => "admin",
                "persistent" => FALSE,
                "database"   => "frontend_generic",
            ),
            "table_prefix" => "pre_",
            "charset"      => "utf8",
            "caching"      => FALSE,
            "profiling"    => TRUE,
        ),

使用帶有laravel 5的套接字時,請使用unix_socket配置而不是hostport

雖然更改為IP地址確實有效,但當數據庫服務器位於同一台計算機上時,使用套接字可能會有所幫助。

更正最初發布的配置:

    'mysql' => array(
        'driver'           => 'mysql',
        "unix_socket"      => "/var/run/mysqld4.sock",
        "username"         => "admin",
        "password"         => "admin",
        "database"         => "frontend_generic",
        'charset'          => 'utf8',
        'collation'        => 'utf8_unicode_ci',
        'prefix'           => 'pre_',
    ),

這就是Laravel 5中數組應該是這樣的:

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

在位於項目根目錄中的.env文件中,請更改您需要調整的設置,然后再次嘗試。 很難說什么可能導致這個問題,所以試試吧。

示例.env文件

APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomString

DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

CACHE_DRIVER=file
SESSION_DRIVER=file

使用您的憑據創建文件后,如我所評論的那樣,請調用文件.env並將其放在項目的根目錄中。 另外,請務必查看今天的Laravel日志,該日志位於storage / logs / laravel-todays_date.txt,並在此處報告任何錯誤。

您應該將“host”更改為實際的服務器IP地址,而不是其他任何內容。 所以,擺脫套接字的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM