kyo*_*kyo 155 php database-migration laravel laravel-5 homestead
我使用Laravel 5.0在Mac OS Yosemite上.
在我的本地环境中,php artisan migrate我一直在运行:

组态
这是我的.env
APP_ENV=local
APP_DEBUG=true
APP_KEY=*****
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
Run Code Online (Sandbox Code Playgroud)
应用程序\ CONFIG\database.php中
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'homestead'),
'username' => env('DB_USERNAME', 'homestead'),
'password' => env('DB_PASSWORD', 'secret'),
'unix_socket' => '/tmp/mysql.sock',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
]
Run Code Online (Sandbox Code Playgroud)
我该如何避免这种错误?
我试过了 :
在app/database.php中
替换localhost为127.0.0.1
'host'=> env('DB_HOST', 'localhost') - >'host' => env('DB_HOST', '127.0.0.1')
另外,在.env
DB_HOST=localhost - > DB_HOST=127.0.0.1
尝试指定环境
php artisan migrate --env=local
检查MySQL是否正在运行
mysqladmin -u homestead -p status Enter password: secret
我有
Uptime: 21281 Threads: 3 Questions: 274 Slow queries: 0 Opens: 327 Flush tables: 1 Open tables: 80 Queries per second avg: 0.012
这意味着它正在运行.
检查MySQL UNIX套接字(此步骤适用于我)
Abd*_*iri 248
访问被拒绝用户'homestead'@'localhost'laravel 5错误的原因是.env.php文件的缓存问题导致Laravel 5在.env文件中使用基于环境的配置.
1.转到您的应用程序根目录并打开.env文件(在ubuntu中可能是隐藏的,因此按ctrl+ h显示隐藏文件,如果您在终端中,则ls -a在编辑器中键入:显示隐藏文件)并更改数据库配置设置.然后保存.env文件
DB_HOST=localhost
DB_DATABASE=laravelu
DB_USERNAME=root
DB_PASSWORD=''
Run Code Online (Sandbox Code Playgroud)
2.然后重启你的apache服务器/ web服务器.并刷新你的页面,你已经完成了
3.如果仍然出现问题,请尝试运行以下命令以清除旧的配置缓存文件.
php artisan config:clear
Run Code Online (Sandbox Code Playgroud)
现在你已经完成了错误
Moh*_*sin 64
TLDR:你需要停止服务器Ctrl+ c并重新开始使用php artisan serve
如果您使用的是Laravel,并且已经启动了本地开发服务器 php artisan serve
在上面的服务器已经运行之后,你在.env文件中更改了与数据库服务器相关的东西.就像从MySQL迁移到SQLite之类的东西.您需要确保停止上述过程,即停止过程的Ctrcl C任何事情.然后重新启动Artisan Serve即y php artisan serve并刷新浏览器,您的问题将与数据库相关.这对Laravel 5.3来说非常有用
abs*_*ive 31
解决它的两种方法
第一种方式(不推荐)
打开数据库配置文件(laravel_root/config/database.php)并搜索以下代码块.
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'blog'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
Run Code Online (Sandbox Code Playgroud)
更改代码块,如下所示
'host' => 'yourHostName',
'database' => 'YourDatabastName',
'username' => 'YoutDatabaseUsername',
'password' => 'YourDatabasePassword',
Run Code Online (Sandbox Code Playgroud)
第二种方式(Laravel推荐)
检查您的Laravel根目录是否有文件调用.env如果不存在,请查找.env.example,将其复制/重命名为.env,之后文件看起来很棒!
APP_ENV=local
APP_DEBUG=true
APP_KEY=someRandomNumber
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
Run Code Online (Sandbox Code Playgroud)
修改以下块如下
DB_HOST=yourHostName
DB_DATABASE=yourDatabaseName
DB_USERNAME=yourDatabaseUsername
DB_PASSWORD=youPassword
Run Code Online (Sandbox Code Playgroud)
现在它会正常工作.
小智 21
如果您使用php artisan migrateNOT来自流浪汉但不是来自主机,那么您必须.env在盒子的ip 内部进行定义192.168.10.10
并且显然从你的ip设置了对宅基地用户的许可
grant all privileges on *.* to 'homestead'@% identified by 'secret';
Run Code Online (Sandbox Code Playgroud)
在.env文件中
DB_HOST=192.168.10.10
DB_DATABASE=homestead
DB_USERNAME=homestead
Run Code Online (Sandbox Code Playgroud)
kyo*_*kyo 11
使用MySQL 查找unix_socket位置
mysql -u homestead -p
mysql> show variables like '%sock%';
+-----------------------------------------+-----------------------------+
| Variable_name | Value |
+-----------------------------------------+-----------------------------+
| performance_schema_max_socket_classes | 10 |
| performance_schema_max_socket_instances | 322 |
| socket | /var/run/mysqld/mysqld.sock |
+-----------------------------------------+-----------------------------+
3 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
然后我去config/database.php
我更新了这一行: 'unix_socket' => '/tmp/mysql.sock',
至 : 'unix_socket' => '/var/run/mysqld/mysqld.sock',
而已.它适合我作为我的第四次尝试.我希望这些步骤可以帮助某人.:d
cod*_*441 11
我有同样的问题,最后我发现我只需要重新启动服务器并重新启动
Ctrl+ c然后
php artisan serve
Run Code Online (Sandbox Code Playgroud)
Soj*_*ose 10
安装Homestead时,会在VM中创建默认的"homestead"数据库.您应该通过SSH连接到VM
homestead ssh并从那里运行迁移.如果您在本地没有VM工作,则需要手动创建数据库.默认情况下,数据库应该称为homestead,用户名是homestead,密码是secret.
请查看laracasts或此博客文章中的此主题以获取更多详细信息
如果你到了
[PDOException] SQLSTATE[HY000] [2002] No such file or directory
Run Code Online (Sandbox Code Playgroud)
尝试将/app/config/database.php文件中的"host"从"localhost"更改为"127.0.0.1".您可以在此主题中找到更多详细信息和其他修复程序.
还要检查是否指定了正确的unix_socket.检查这个帖子.
将来的某个时候.尝试先清除您的配置
php artisan config:clear.
Run Code Online (Sandbox Code Playgroud)
关闭所有终端/ cmd窗口,然后重新启动终端/ CMD,这应该摆脱错误消息.看看它是否有效.
在我的情况下(laravel 5+),我必须将我的密码用单引号括起来并清除配置缓存:
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=database_name
DB_USERNAME=user_name
DB_PASSWORD='password'
Run Code Online (Sandbox Code Playgroud)
然后运行:
php artisan config:clear
Run Code Online (Sandbox Code Playgroud)
小智 5
我使用laravel 5.*我想我.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
QUEUE_DRIVER=sync
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
Run Code Online (Sandbox Code Playgroud)
这就是编写bd配置,所以你可以删除那些配置变量,这样laravel就可以在/ config下进行配置或者在这里设置你的配置.
我做了第二次,它适合我:)
小智 5
得到它了!以root身份登录并授予homestead @ localhost所有权限.
从您的终端:
$ homestead ssh
$ mysql -u root -p
Enter password: secret
mysql> grant all privileges on *.* to 'homestead'@'localhost' identified by 'secret';
Query OK, 0 rows affected (0.00 sec)
exit
Run Code Online (Sandbox Code Playgroud)
现在,家庭常规用户可以访问您的所有表,因此,应该可以运行迁移等操作.
使用新配置更改.env后,您必须停止服务器并再次运行它(php artisan serve).laravel在初始化服务器时获取环境的原因.如果你没有重新启动,你将改变.env问自己为什么没有发生变化!!
小智 5
您要做的就是更改.env文件。
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
Run Code Online (Sandbox Code Playgroud)
在DB_DATABASE前面,输入数据库的名称,在DB_USERNAME前面,使用root。
| 归档时间: |
|
| 查看次数: |
260120 次 |
| 最近记录: |