Laravel Migration停滞不前,什么也没做

时间:2018-07-22 17:45:56

标签: php mysql laravel homebrew artisan-migrate

只需完成Laravel site上列出的所有步骤,即可为 MacOS HighSierra 安装并启动并运行。我目前安装了Composer,Homebrew,valet,PHP 7.2.8,MySQL版本8.0.11和Laravel 5.6.28。我可以通过执行Laravel new blog命令来创建一个新项目,并且没有任何问题。另外,当我进入浏览器时,我可以看到我刚刚创建或正在处理的当前项目。我可以运行valet list命令,因此我知道它的运行/工作情况。我还可以通过运行php artisan make:migration test_test_test创建迁移并将其显示在我的项目中。

我的PATH中也有~/.composer/vendor/bin

我的.env文件看起来像这样

APP_NAME=Laravel
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=blog        
DB_USERNAME=root
DB_PASSWORD=

BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1 
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp 
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

我运行了php artisan migrate -vvv命令,该命令运行并且停止/挂起,没有任何输出。我必须ctl-c才能摆脱它。也尝试过-v /-vv,做了同样的事情。

我创建了一个名为blog的数据库,甚至手动添加了一个表test以确保该数据库正在运行/正在运行。

更新

继续并卸载MySQL并重新安装它。我能够使php artisan migration -v命令运行并收到此错误。

现在我遇到此错误。

MacBook-Pro:anything computername$ php artisan migrate -v

PDOException  : SQLSTATE[HY000] [2006] MySQL server has gone away

at /Users/computername/Sites/anything/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:68
64|         if (class_exists(PDOConnection::class) && ! $this->isPersistentConnection($options)) {
65|             return new PDOConnection($dsn, $username, $password, $options);
66|         }
67| 
> 68|         return new PDO($dsn, $username, $password, $options);
69|     }
70| 
71|     /**
72|      * Determine if the connection is persistent.

异常跟踪:

创建一个路由器并查看连接到我创建的表的视图,以查看我是否能够访问数据库变量并将其打印出来。返回时,我得到了这个错误。

Exception message: PDO::__construct(): Unexpected server respose while doing caching_sha2 auth: 109

7 个答案:

答案 0 :(得分:7)

我自己遇到了这个问题,并收到错误消息Exception message: PDO::__construct(): Unexpected server respose while doing caching_sha2 auth: 109

这是我修复它的方式:

我像这样以root用户身份登录mysql mysql –uroot –p并输入我的密码

您可以通过键入以下SELECT User, Host FROM mysql.user;

来获取服务器上的用户列表。

确保您看到正在尝试从.env文件连接到数据库的用户。 您将需要更改当前用户以使用最新版本的mysql所需的caching_sha2_password。

这是该命令。

ALTER USER `username`@`localhost` IDENTIFIED WITH caching_sha2_password BY 'password';

虽然仍以root用户身份登录,但是您需要运行此命令以允许您的用户执行允许php artisan migrate发生的所需任务。例如:CREATE, DROP, ALTER, DELETE等。

GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';

如果这不起作用,您也可以选择要允许的命令,而不是授予他们完全的访问权限。

GRANT SELECT, INSERT ON *.* TO 'someuser'@'somehost';

希望这会有所帮助〜

答案 1 :(得分:1)

服务器消失是一个MySql错误,check this link

检查您的mysql服务确实正在运行,然后检查您的.env文件上是否具有正确的凭据

关于迁移中的“初始错误”,我们需要查看迁移代码中的内容。

编辑:由于迁移是Laravel的默认设置,因此问题可能出在Laravel与数据库之间的连接上。

要确认这一点:

  1. 手动创建数据库;
  2. 创建表格并在其中放置一行;
  3. 创建返回DB::statement('select * from tablejustcreated');的路线

向该路由发出请求,如果请求冻结,则成为连接,最有可能是.env文件凭据(用户名和密码,主机,端口)。

答案 2 :(得分:0)

这是PHP 7.2.8中的一个已知错误。降级到PHP 7.2.7,直到修复为止。

从PHP 7.2.7升级到PHP 7.2.8时遇到了同样的问题。

请参见https://bugs.php.net/bug.php?id=76651

答案 3 :(得分:0)

非常感谢@poohhbear和其他所有人帮助我解决了此问题。

实际上对我有用的是:

ALTER USER 'myusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mypassword';

...大概是因为新的MySQL默认为caching_sha2_password,而PHP不知道如何处理。

答案 4 :(得分:0)

我遇到了同样的问题,我通过冲洗特权对其进行了修复。

答案 5 :(得分:-1)

尝试这个php artisan migrate --force [https://laravel.com/docs/5.6/migrations] 这是我认为可能有用的迁移文档

答案 6 :(得分:-2)

删除db 博客中的所有表并运行此artisan命令

php artisan migrate

此数据库中的构建表