SQLSTATE[HY000] [2002] yii2 中没有那个文件或目录
SQLSTATE[HY000] [2002] No such file or directory in yii2
我用ubuntu 16.04.
PHP Version 7.0.4-7ubuntu2
.
Apache/2.4.18 (Ubuntu)
.
PHP extension: mysqli
(在phpmyadmin中写的)。
我从 15.10 to 16.04
升级了我的 ubuntu,但我遇到了这个错误:
我的项目在我的服务器中正确 运行 但我不能 运行 在我的 os:
Database Exception – yii\db\Exception
SQLSTATE[HY000] [2002] No such file or directory
↵
Caused by: PDOException
SQLSTATE[HY000] [2002] No such file or directory
in /var/www/html/iicitySite/vendor/yiisoft/yii2/db/Connection.php at line 579
将 "localhost" 更改为“127.0.0.1”作为您的主机
return [
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=127.0.0.1;dbname=abc',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
],
希望这个回答对您有所帮助:
将主机名从 localhost 更改为 127.0.0.1
这是里面 backend\common\config\main-local.php
现在你 运行 php yii migrate .
希望,它将成功在数据库中创建表
如果使用mamp,请不要在MACOS中使用"php"命令,而在mamp中使用"php",如/Applications/MAMP/bin/php/php5.6.30/bin/php yii migrate
。
对于 MAMP 用户解决方案是
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;port=8889;dbname=mydbname;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock',
'username' => 'myuser',
'password' => 'mypassword',
'charset' => 'utf8',
],
],
我也遇到了同样的问题。更改 localhost
没有解决我的问题。相反,像这样添加您的数据库端口:
'dsn'=>'mysql:host=localhost:3307;dbname=geep'
我 运行 在 MAMP 环境中使用上述 2 种解决方案效果很好
- 将
localhost
更改为127.0.0.1
- 保持为本地主机并定义 mysql 端口,甚至使用默认端口 (
localhost:3306
)
对于PHP 7.2.24-0ubuntu0.18.04.3,
- 获取mysql套接字路径
- 将套接字信息添加到 yii2 的数据库配置
要获取套接字路径,请登录 mysql 并执行以下步骤
打开终端并执行以下步骤
mysql -u root -p
mysql> show variables like '%sock%';
+-----------------------------------------+------------------------------------------------------+
| Variable_name | Value |
+-----------------------------------------+------------------------------------------------------+
| mysqlx_socket | /tmp/mysqlx.sock |
| performance_schema_max_socket_classes | 10 |
| performance_schema_max_socket_instances | -1 |
| socket | /opt/packages/lampstack-7.3.9-0/mysql/tmp/mysql.sock |
+-----------------------------------------+------------------------------------------------------+
4 rows in set (0.00 sec)
exit
接下来添加如下配置信息
'class' => 'yii\db\Connection',
'dsn' => 'mysql:unix_socket=/opt/packages/lampstack-7.3.9-0/mysql/tmp/mysql.sock;dbname=basketmantra',
'username' => 'root',
'password' => 'root123',
'charset' => 'utf8',
希望对您有所帮助
在某些情况下,您可能会使用 httpd、apache 或 lampp,然后还要确保检查终端中的 php 和 mysql 命令是否与网络服务器使用的版本相同。
Web 服务器中的 phpinfo() 有助于找出 Web 服务器正在使用的版本
<?php
phpinfo();
?>
对于命令
$ type php
php is hashed (/usr/bin/php)
$ type mysql
mysql is /opt/packages/lampstack-7.3.9-0/mysql/bin/mysql
使用yii2,我的解决办法是在common/main-local.php中注释代码
出于某种原因,yii2 尝试在生产环境中获取 main-local.php 而不是 common 文件夹中的 main.php,但是当被注释时它起作用(在 common/main.[=17= 上获取数据库配置]
<?php
// common/main-local.php
return [
/* 'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=172.17.0.2;dbname=ememariadb',
'username' => 'dbsenha',
'password' => 'dbUser',
'charset' => 'utf8',
],
],*/
];
我用ubuntu 16.04.
PHP Version 7.0.4-7ubuntu2
.
Apache/2.4.18 (Ubuntu)
.
PHP extension: mysqli
(在phpmyadmin中写的)。
我从 15.10 to 16.04
升级了我的 ubuntu,但我遇到了这个错误:
我的项目在我的服务器中正确 运行 但我不能 运行 在我的 os:
Database Exception – yii\db\Exception
SQLSTATE[HY000] [2002] No such file or directory
↵
Caused by: PDOException
SQLSTATE[HY000] [2002] No such file or directory
in /var/www/html/iicitySite/vendor/yiisoft/yii2/db/Connection.php at line 579
将 "localhost" 更改为“127.0.0.1”作为您的主机
return [
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=127.0.0.1;dbname=abc',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
],
希望这个回答对您有所帮助:
将主机名从 localhost 更改为 127.0.0.1
这是里面 backend\common\config\main-local.php
现在你 运行 php yii migrate .
希望,它将成功在数据库中创建表
如果使用mamp,请不要在MACOS中使用"php"命令,而在mamp中使用"php",如/Applications/MAMP/bin/php/php5.6.30/bin/php yii migrate
。
对于 MAMP 用户解决方案是
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;port=8889;dbname=mydbname;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock',
'username' => 'myuser',
'password' => 'mypassword',
'charset' => 'utf8',
],
],
我也遇到了同样的问题。更改 localhost
没有解决我的问题。相反,像这样添加您的数据库端口:
'dsn'=>'mysql:host=localhost:3307;dbname=geep'
我 运行 在 MAMP 环境中使用上述 2 种解决方案效果很好
- 将
localhost
更改为127.0.0.1
- 保持为本地主机并定义 mysql 端口,甚至使用默认端口 (
localhost:3306
)
对于PHP 7.2.24-0ubuntu0.18.04.3,
- 获取mysql套接字路径
- 将套接字信息添加到 yii2 的数据库配置
要获取套接字路径,请登录 mysql 并执行以下步骤
打开终端并执行以下步骤
mysql -u root -p mysql> show variables like '%sock%'; +-----------------------------------------+------------------------------------------------------+ | Variable_name | Value | +-----------------------------------------+------------------------------------------------------+ | mysqlx_socket | /tmp/mysqlx.sock | | performance_schema_max_socket_classes | 10 | | performance_schema_max_socket_instances | -1 | | socket | /opt/packages/lampstack-7.3.9-0/mysql/tmp/mysql.sock | +-----------------------------------------+------------------------------------------------------+ 4 rows in set (0.00 sec) exit
接下来添加如下配置信息
'class' => 'yii\db\Connection', 'dsn' => 'mysql:unix_socket=/opt/packages/lampstack-7.3.9-0/mysql/tmp/mysql.sock;dbname=basketmantra', 'username' => 'root', 'password' => 'root123', 'charset' => 'utf8',
希望对您有所帮助
在某些情况下,您可能会使用 httpd、apache 或 lampp,然后还要确保检查终端中的 php 和 mysql 命令是否与网络服务器使用的版本相同。
Web 服务器中的phpinfo() 有助于找出 Web 服务器正在使用的版本
<?php
phpinfo();
?>
对于命令
$ type php
php is hashed (/usr/bin/php)
$ type mysql
mysql is /opt/packages/lampstack-7.3.9-0/mysql/bin/mysql
使用yii2,我的解决办法是在common/main-local.php中注释代码 出于某种原因,yii2 尝试在生产环境中获取 main-local.php 而不是 common 文件夹中的 main.php,但是当被注释时它起作用(在 common/main.[=17= 上获取数据库配置]
<?php
// common/main-local.php
return [
/* 'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=172.17.0.2;dbname=ememariadb',
'username' => 'dbsenha',
'password' => 'dbUser',
'charset' => 'utf8',
],
],*/
];