我正在尝试将我的laravel项目部署到000webhost。问题是我无法连接到我的数据库。
当我将DB_HOST
设置为127.0.0.1时,我得到了一个" SQLSTATE [HY000] [2002]"提到错误。当我将DB_HOST
更改为localhost
时,我收到错误消息"错误的com stmt准备响应大小7"。
这是我的.env文件:
APP_ENV=local
APP_DEBUG=true
APP_KEY=base64:fuFWdq2OAIZbxiiouYdTfbPnkeEOL8h/hDJjvb7XT+c=
APP_URL=http://localhost
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=id1619178_kule
DB_USERNAME=************
DB_PASSWORD=************
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=mail
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=tls
MAIL_TO=
答案 0 :(得分:0)
并非所有共享托管都在与 HTTP 服务器相同的localhost
上提供 MySQL 。您应该检查 cpanel 以获取 MySQL 服务器的地址:
From your hosting provider's documentation:
什么是MySQL主机名?
你去了我们的会员'区域,进入控制面板,然后点击“MySQL'图标。您的MySQL主机名将在那里列出。
重要!永远不要使用' localhost'作为你的MySQL主机名,或者你将获得访问被拒绝的错误!
您的特定提供商明确说明您应该,"永远不要使用localhost
"。
答案 1 :(得分:0)
您指定的Web主机的主机名因服务器而异!
您可以从控制面板检索主机名并向文件添加更改,否则您将获得权限被拒绝。
答案 2 :(得分:0)
000webhost无法从.env文件执行命令,因此您必须在/config/database.php文件中手动指定五个变量
'mysql' => [
'driver' => 'mysql',
'host' => 'localhost',
'port' => '3306',
'database' => 'your_database_name',
'username' => 'your_database_username',
'password' => 'yourpassword',
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
],
答案 3 :(得分:0)
如果000webhost中有免费计划,则无法进行远程连接。仅来自您的网站。