首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将我的Laravel项目与本地MAMP服务器连接: SQLSTATE[HY000] [2002]没有这样的文件或目录(SQL: select * from‘such’)

问无法将我的Laravel项目与本地MAMP服务器连接: SQLSTATE[HY000] [2002]没有这样的文件或目录(SQL: select * from‘such’)
EN

Stack Overflow用户
提问于 2020-05-13 13:19:42
回答 1查看 777关注 0票数 0

几个小时以来,我一直试图在Laravel项目和本地MAMP服务器之间建立数据库连接。

当我在mac上的终端上运行命令时,迁移就可以工作了。当我把它放在我的流浪汉盒子里时,它就不起作用了。

代码语言:javascript
复制
iMac-van-Tim:myProject timcreemers$ php artisan migrate:status
+------+--------------------------------------------+-------+
| Ran? | Migration                                  | Batch |
+------+--------------------------------------------+-------+
| Yes  | 2014_10_12_000000_create_users_table       | 1     |
| Yes  | 2019_08_19_000000_create_failed_jobs_table | 1     |
+------+--------------------------------------------+-------+

但是,当我运行我的应用程序时,我会得到以下错误:

代码语言:javascript
复制
Illuminate\Database\QueryException
SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from `users`)

当我连接到http://localhost:8888/上的MAMP服务器时,它会显示以下设置:

代码语言:javascript
复制
Host    localhost
Port    8889
User    root
Password    root
Socket  /Applications/MAMP/tmp/mysql/mysql.sock

我的.env文件:

代码语言:javascript
复制
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=8889
DB_DATABASE=myproject
DB_USERNAME=root
DB_PASSWORD=root

我的config/database.php文件,其中我清空了属性,因为该文件从.env中检索它们:

代码语言:javascript
复制
'connections' => [

    'sqlite' => [
        'driver' => 'sqlite',
        'url' => env('DATABASE_URL'),
        'database' => env('DB_DATABASE', database_path('database.sqlite')),
        'prefix' => '',
        'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
    ],

    'mysql' => [
        'driver' => 'mysql',
        'url' => env('DATABASE_URL'),
        'host' => env('DB_HOST', ''),
        'port' => env('DB_PORT', ''),
        'database' => env('DB_DATABASE', ''),
        'username' => env('DB_USERNAME', ''),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', '/Applications/MAMP/tmp/mysql/mysql.sock'),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'prefix_indexes' => true,
        'strict' => true,
        'engine' => null,
        'options' => extension_loaded('pdo_mysql') ? array_filter([
            PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
        ]) : [],
    ],

    'pgsql' => [
        'driver' => 'pgsql',
        'url' => env('DATABASE_URL'),
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '5432'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'charset' => 'utf8',
        'prefix' => '',
        'prefix_indexes' => true,
        'schema' => 'public',
        'sslmode' => 'prefer',
    ],

    'sqlsrv' => [
        'driver' => 'sqlsrv',
        'url' => env('DATABASE_URL'),
        'host' => env('DB_HOST', 'localhost'),
        'port' => env('DB_PORT', '1433'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'charset' => 'utf8',
        'prefix' => '',
        'prefix_indexes' => true,
    ],

],

/*
|--------------------------------------------------------------------------
| Migration Repository Table
|--------------------------------------------------------------------------
|
| This table keeps track of all the migrations that have already run for
| your application. Using this information, we can determine which of
| the migrations on disk haven't actually been run in the database.
|
*/

'migrations' => 'migrations',

/*
|--------------------------------------------------------------------------
| Redis Databases
|--------------------------------------------------------------------------
|
| Redis is an open source, fast, and advanced key-value store that also
| provides a richer body of commands than a typical key-value system
| such as APC or Memcached. Laravel makes it easy to dig right in.
|
*/

'redis' => [

    'client' => env('REDIS_CLIENT', 'phpredis'),

    'options' => [
        'cluster' => env('REDIS_CLUSTER', 'redis'),
        'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
    ],

    'default' => [
        'url' => env('REDIS_URL'),
        'host' => env('REDIS_HOST', '127.0.0.1'),
        'password' => env('REDIS_PASSWORD', null),
        'port' => env('REDIS_PORT', '6379'),
        'database' => env('REDIS_DB', '0'),
    ],

    'cache' => [
        'url' => env('REDIS_URL'),
        'host' => env('REDIS_HOST', '127.0.0.1'),
        'password' => env('REDIS_PASSWORD', null),
        'port' => env('REDIS_PORT', '6379'),
        'database' => env('REDIS_CACHE_DB', '1'),
    ],

],

我尝试过无数种解决方案,但似乎没有一种可行:

在property

  • switching中添加//
  • //tmp/mysql.sock本地主机和127.0.0.1之间的DB_HOST (尝试了 my MAMP服务器)

我检查了套接字路径并找到了一个mysql.sock.lock文件,我不知道这是否会导致任何问题?

代码语言:javascript
复制
iMac-van-Tim:bin timcreemers$ cd /Applications/MAMP/tmp/mysql/
iMac-van-Tim:mysql timcreemers$ ls
mysql.pid       mysql.sock      mysql.sock.lock

据我所读,它可能与套接字有关,但不幸的是,我对它一无所知。有人能解释一下迷途箱应该如何与MAMP服务器一起工作吗?

此外,同时使用Homestead环境和Mamp服务器作为数据库是一种良好的实践吗?或者这是否不必要地使事情复杂化了?

我有点绝望了,谁能帮我指出正确的方向吗?提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2021-12-28 10:20:15

如果您在Mac上使用MAMP,有时需要为套接字添加一个安装程序,并使用"localhost“代替127.0.0.1

代码语言:javascript
复制
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=8889
DB_DATABASE=database_name
DB_USERNAME=root
DB_PASSWORD=root
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61775722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档