我是Symfony的新手,开始做一些教程,以便完成一些事情。我在Linux Mint 18机器和一个标准的symfony3项目上工作。
我想创建一个简单的数据库来玩它,但我遇到了一个错误,我找不到正确的解决方案。
我的参数。Yml文件看起来像这样:
parameters:
database_host: localhost
database_port: null
database_name: symfony
database_user: root
database_password: null
mailer_transport: smtp
mailer_host: 127.0.0.1
mailer_user: null
mailer_password: null
secret: (not relevant)
我的Genus.php文件看起来像这样:
namespace AppBundle'Genus;
use Doctrine'ORM'Mapping as ORM;
/**
* @ORM'Entity
* @ORM'Table(name="genus")
*/
class Genus
{
/**
* @ORM'Id
* @ORM'GeneratedValue(strategy="AUTO")
* @ORM'Column(type="integer")
*/
private $id;
/**
* @ORM'Column(type="string")
*/
private $name;
}
当我执行命令dpkg -l php*mysql我得到以下结果:
dpkg -l php*mysql
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-=================-=============-=============-============================
un php-pdo-mysql <none> <none> (no description available)
ii php7.0-mysql 7.0.8-0ubuntu amd64 MySQL module for PHP
un php7.0-pdo-mysql <none> <none> (no description available)
当我尝试使用命令提示符使用
创建本地数据库时XXX@XXX-pc ~/PhpstormProjects/test_symfony $ php bin/console doctrine:database:create
这是我得到的:
[异常学说' DBAL ' ' ConnectionException]
在driver: SQLSTATE[HY000][2002]中出现异常目录
[学说' DBAL ' ' PDOException司机 ] SQLSTATE [HY000][2002]没有这样的文件或目录
[PDOException] SQLSTATE[HY000] [2002] No such file or directory
我遇到过很多其他的话题,但都找不到正确的答案。谁能告诉我,我在这里错过了什么?任何帮助都非常感谢:)
在我的例子中,我只更改了localhost->127.0.0.1,它工作了!
可能是太晚了,但我有同样的问题"SQLSTATE[HY000][2002]没有这样的文件或目录"在我的symfony 3.2.9部署
我通过将database_host值从"localhost"更改为我的参数上的服务器IP来修复它。yml文件
但是当我试图通过SSH运行命令行时,我有这个另一个错误消息:
[Doctrine'DBAL'Exception'ConnectionException]
An exception occured in driver: SQLSTATE[HY000] [2002] Connection refused
我最终通过在我的配置中添加这两行来修复它。
unix_socket: /var/lib/mysql/mysql.sock
server_version: '5.5'
我所有的最终学说配置是这样的:
doctrine:
dbal:
driver: pdo_mysql
host: '%database_host%'
port: '%database_port%'
dbname: '%database_name%'
user: '%database_user%'
password: '%database_password%'
unix_socket: /var/lib/mysql/mysql.sock
server_version: '5.5'
charset: UTF8
希望这能帮助到一些人
如果您使用mamp测试此:
sudo ln -s /Applications/MAMP/tmp/mysql /var/mysql
出现同样的错误。
OS: macOS High Sierra。MAMP 5.0.1
问题是MAMP上默认的MySQL端口是8889和参数。[PDOException] SQLSTATE[HY000] [2002] No such file or directory
此错误通常发生在您的web应用程序未连接到数据库时。根据参数。yml正在搜索mysql服务器&无法连接,因为当时mysql没有安装在您的机器上。
您没有安装MySQL,请先安装MySQL
有时会发生这种情况,因为您的mySql由于某些原因被停止。
检查:
service mysql status
如果它是不活动的,你只需要启动它:
service mysql start
我对MySQL的了解表明可能会发生一种变体,并解释了这一点:
你有(旧的)mysqld运行,然后从datadir中删除所有文件。然后可能是新服务器无法启动然后你连接到旧的mysqld,它仍然在运行,但得到'No such file or directory'错误试图访问自己的系统文件(已删除)
Symfony mysql connection
-
启动你的mamp, xamp或其他替代我的sql
-
去http://localhost:8888/phpMyAdmin/获取这些信息,Bd_name:支持rootBd_pass:可以是root,也可以为空主机:可以是localhost注意,URL中的默认端口是8888,但它不是您应该在.env文件中使用的端口,请在admin phpmyAdmin页面的顶部检查Server:localhost:the_port_is_here。所以它可以是8889
-
写你的服务器版本,它可以是5.7.26
-
返回到symfony项目中的.env文件,并更改DATABASE_URL=行示例:DATABASE_URL="mysql://root:root@127.0.0.1:8889/mybddname?serverVersion=5.7"
-
打开项目集成终端,第一次写
php bin/console原则:database:create
如果你想删除数据库
php bin/console doctrine:database:drop --force
PS:我在Mac OS上使用nmap用于symfony项目