错误:SQLSTATE[HY000] [2002] 没有这样的文件或目录

2023-12-14

我知道这类问题可能被问过几次,但它们都与 laravel 有关,在我的例子中,这是没有框架的普通 php。

我有一个表单,可以从用户那里收集表单并将其保存到数据库中,但我不断收到有关 MYSQL 的错误Error: SQLSTATE[HY000] [2002] No such file or directory。这是我的数据库配置文件和包含它的文件:

// Database config 
<?php

$host = 'localhost';
$user = 'admin';
$password = '123456';
$db_name = 'nairobi';

$dsn = 'mysql:host='.$host.';dbname='.$db_name;
$options = [ 
  PDO::ATTR_PERSISTENT => true,
  PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
];

    // Create a new PDO instance 
    try {
      $dbh = new PDO($dsn, $user, $password);
    } catch (PDOException $e) {
      print "Error: " . $e->getMessage() . "</br>";
      die();
    }

?>
<?php 
require "./library/Database.php";

if (isset($_POST['submit'])) {

  $first_name = $_POST['first_name'];
  $last_name = $_POST['last_name'];
  $email = $_POST['email'];

  $sql = 'INSERT INTO TABLE members(first_name, last_name, email) 
  VALUES (:first_name, :last_name, :email)';
  $stmt = $dbh->prepare($sql);
  $stmt_value = [
    ':first_name' => $first_name, 
    ':last_name' => $last_name, 
    ':email'=>$email
  ];
  $stmt->execute($stmt_value);
}


?>

是的,我知道处理表单的脚本不安全。

另外,当我访问该页面时,出现以下错误

Fatal error: Uncaught PDOException: SQLSTATE[HY000] [2002] No such file or directory in /var/www/html/library/Database.php:19 Stack trace: #0 /var/www/html/index.php(2): require() #1 {main} thrown in /var/www/html/library/Database.php on line 19

如果需要的话,这是我使用的sql

CREATE TABLE IF NOT EXISTS members(
  member_id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
  first_name VARCHAR(255) NOT NULL,
  last_name VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL UNIQUE,
  reference_code INT NOT NULL
);

整个项目也在 docker 容器内,这是docker-compose.yml file

version: '3.7'

services:
  php:
    container_name: nairobi_php
    build:
      context: ./
    volumes:
      - './src:/var/www/html'
    depends_on:
      - mysql
    ports:
      - 80:80

  mysql:
    container_name: nairobi_mysql
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: CUeHpADRmZCtnTFGctxp
      MYSQL_DATABASE: nairobi
      MYSQL_USER: admin
      MYSQL_PASSWORD: 123456
    restart: always
    command: --default-authentication-plugin=mysql_native_password
    ports:
      - 3306:3306

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080


我终于解决了这个问题,感谢@Dlk的帮助。

问题的原因是因为database.php,我指的是 mysql 的主机localhost而不是 MYSQL 服务的名称docker-compose.yml文件。因此database.php文件应该如下所示:

<?php

$host = 'nairobi_mysql'; // Must be the service name of the database in `docker-compose.yml`
$db_name = 'nairobi';
$user = 'admin';
$pass = '123456';
$charset = 'utf8mb4'; // Always set charset for database
$port = '3306'; 

$dsn = "mysql:host=$host;dbname=$db_name;port=$port;charset=$charset";
$options = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];
try {
     $pdo = new PDO($dsn, $user, $pass, $options);
} catch (\PDOException $e) {
     throw new \PDOException($e->getMessage(), (int)$e->getCode());
}

?>

这与我的docker-compose.yml file

version: '3.7'

services:
  php:
    container_name: nairobi_php
    build:
      context: ./
    volumes:
      - './src:/var/www/html'
    depends_on:
      - mysql
    ports:
      - 80:80

  mysql:
    container_name: nairobi_mysql
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: CUeHpADRmZCtnTFGctxp
      MYSQL_DATABASE: nairobi
      MYSQL_USER: admin
      MYSQL_PASSWORD: 123456
    restart: always
    command: --default-authentication-plugin=mysql_native_password
    ports:
      - 3306:3306

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

错误:SQLSTATE[HY000] [2002] 没有这样的文件或目录 的相关文章

  • 如何使用WAMP登录phpMyAdmin,用户名和密码是什么?

    根 这个词是什么意思php我的管理员 http en wikipedia org wiki PhpMyAdmin 每当我写作时localhost phpmyadmin在地址栏上 我被要求输入用户名和密码 但我不知道它们是什么 我不记得何时何
  • 如何在不违反唯一约束的情况下交换MySQL中两行的值?

    我有一个带有优先级列的 任务 表 它具有唯一的约束 我试图交换两行的优先级值 但我一直违反约束 我在类似的情况下在某个地方看到过这个语句 但不是 MySQL 的 UPDATE tasks SET priority CASE WHEN pri
  • laravel/lumen-installer 安装失败:guzzlehttp/guzzle 锁定在 6.3.0

    我正在尝试通过命令安装 Lumencomposer global require laravel lumen installer 但在终端上抛出以下错误 Changed current directory to home lykos con
  • Google BigQuery 与 PHP 集成

    我需要帮助将 google bigquery 代码集成到 PHP 中 所以我可以从 php 代码本身执行查询和其他类型的操作 需要您的帮助并建议我一些工作示例链接 提前致谢 这是一段代码 正确地创建一个Google Client using
  • Laravel 克隆查询字符串

    是否可以克隆一个查询字符串 以便我可以编写一次并在不影响其他结果的情况下进行长时间的更改 query DB table users gt where id 123 queryGet query queryPaginate query que
  • 从 MySQL 返回结果时的数字顺序

    我的数据库表中有以下类型的标题 Topic 1 blah blah Topic 2 blah blah Topic 3 blah blah Topic 10 blah blah Topic 11 blah blah etc 选择查询将始终返
  • Laravel 规则和正则表达式 (OR) 运算符的问题

    我的 Laravel 规则和正则表达式操作有一个小问题 基本上 规则是一个数组 如下所示 room gt required alpha num min 2 max 10 我遇到的问题是使用正则表达式和 时 或 运算符 例如 cid gt r
  • php 的 SCORM 库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们为一位客户开发了电子学习网站 最近他询问需要 SCORM feed 我不知道我的系统是否与 scr
  • 如何在 BigQuery/SQL 中将行转置为包含大量数据的列?

    我在将 BigQuery 中的大量数据表 15 亿行 从行转置为列时遇到问题 我可以弄清楚如何在硬编码时使用少量数据来完成此操作 但是对于如此大量的数据 该表的快照如下所示 CustomerID Feature Value 1 A123 3
  • 让 PHP 脚本永远循环执行队列系统中的计算作业

    目前 我有一个永远在我的服务器上运行的 perl 脚本 检查 SQS 是否有要计算的数据 该脚本已经运行了大约 6 个月 没有出现任何问题 所以 现在我想切换到 PHP 的 CLI 并让脚本永远循环在那里 主要是因为我对PHP比较熟悉 Ba
  • 当子查询具有组列时,MySQL 8 不使用 INDEX

    我们刚刚从 mariadb 5 5 迁移到 MySQL 8 一些更新查询突然变得很慢 经过更多调查 我们发现当子查询有组列时 MySQL 8不使用索引 例如 下面是一个示例数据库 桌子users维护每种类型用户的当前余额 表 帐户 维护每天
  • 创建验证电子邮件的机制

    我的网站上已经有一个高级用户登录 注册系统 colemansystems psm2 co uk http colemansystems psm2 co uk 但是 我希望向新用户发送一封电子邮件以验证他们的电子邮件地址 如果他们没有点击该链
  • Symfony2 将复选框值从 0/1 更改为“no”/“yes”

    我创建了一个带有一个复选框的表单 用户设置类型 php public function buildForm FormBuilderInterface builder array options builder gt add newslett
  • 拖放图像上传在服务器上不起作用

    我正在尝试实现拖放图像上传 我在网上找到了一个相当简单的脚本并适合我的使用 在我的本地安装中 文件上传得很好 但在服务器上却不行 从我的调试尝试来看 SERVER HTTP X FILENAME 甚至没有被 php 设置 我尝试了以下方法
  • 更新 xampp 中的 ICU 扩展吗?

    我在跑xampp我需要升级ICU php intl 扩展 到最新版本 我下载了54从 ICU 页面 但不确定如何升级它 有一个bin include and lib文件夹 我应该把这些文件放在哪里 我还需要做其他事情吗 要升级 XAMP 安
  • 在 Laravel 中使用 grpc,“未找到‘Grpc\ChannelCredentials’类”。

    我正在尝试在 Laravel 项目中使用 grpc 这是我的composer json 文件的一部分 require datto protobuf php dev master google auth 0 7 0 grpc grpc dev
  • 如何在没有脚本 (PHP) 或服务器配置 (Nginx) 的情况下检测移动设备(和/或移动 cookie)?

    我们很快就会推出网站的移动版本 我们的完整网站和移动网站仅在主题上有所不同 即网址相同 唯一的区别在于前端 当用户访问我们的网站时 我们需要能够执行以下操作 1 检查 cookie 移动 true 或 false 以确定是否已定义完整与移动
  • 逻辑编程帮助

    A if infos 空和inputs empty 删除 B if infos空和inputs 空的 添加 C if infos 空和inputs 等于信息 添加 我们可以有这样的 if B it s the most common ope
  • 需要从我的应用程序将文件上传到谷歌文档并存储对上传文件的引用

    我正在开发一个基于谷歌应用程序的基本系统 就像我之前定义的那样 我正在构建一个简单的订购系统 并且对于每个下订单 我都会附加一个文件或文档 我希望能够设置它 以便我上传的任何文件都会上传到谷歌文档中 并且我能够以某种方式从我自己的应用程序维
  • 在子目录中使用反向代理运行 Symfony 5

    我喜欢在反向代理后面运行 Symfony 5 应用程序 该代理提供以下端点 https my domain service1 https my domain service1 代理配置基本上是这样的 ProxyPass marketsy h

随机推荐

  • React:使用危险的SetInnerHTML插入时脚本标签不起作用

    我正在尝试使用React中的dangerouslySetInnerHTML属性将从我的服务器发送的html设置为在div内显示 我里面还有 script 标签 并使用该 html 中定义的函数 我在 JSFiddle 中制作了错误示例her
  • Oracle ODBC:SQL_HANDLE_ENV 上的驱动程序 SQLAllocHandle 失败

    我收到消息 Oracle ODBC SQL HANDLE ENV 上的驱动程序的 SQLAllocHandle 失败 当尝试在 Excel 中打开 Oracle 连接时 我正在通过 citrix 在虚拟机中工作 您能否给出提示为什么会出现以
  • for 循环括号内的两个分号

    我正在自定义在互联网上找到的代码 它是Adafruit 推文收据 我无法理解代码的很多部分 但最令我困惑的是括号内有两个分号的 for 循环 boolean jsonParse int depth byte endChar int c i
  • 如何在 Propel 中使用 MySQL 函数

    我想选择 1 个月或更晚的记录 查询是 SELECT FROM foobar WHERE created at gt DATE SUB curdate INTERVAL 1 MONTH 在 Symfony 中使用 Propel 我会 c 新
  • 无法使用 vba vlookup 查找日期

    我有一个 Excel 工作表 其中 A 列包含日期 B 列包含相应的日期 例如 A2 01 01 14 且 B2 星期三 依此类推 我尝试使用示例 vba 代码检索 B2 中的日期 但我不断收到错误消息 运行时错误 1004 无法获取wor
  • 即使不打开设置应用程序,是否可以将 Settings.bundle 中的设置设为默认值

    我有一个带有 settings bundle 的 iPhone 应用程序 可以处理我的应用程序的各种设置 我可以在 root plist 文件中设置默认值 使用 DefaultValue 属性 但这些值仅在用户第一次打开设置应用程序时使用
  • SICP 3.52 延迟 CDR

    练习3 52 define sum 0 define accum x set sum x sum sum 1 define seq stream map accum stream enumerate interval 1 20 2 defi
  • 在 php 中打印到 Zebra 打印机

    正在寻找使用 RAW 端口 9100 从 php 网页打印到 zebra IP 打印机的正确代码 有谁知道这是否可行 我需要将 ZPL 格式输出的字符串直接发送到 ZM400 标签打印机 我到处搜索 找到的最接近的是 使用php直接打印到网
  • 如何使下拉菜单自动完成消失 onblur 或单击 jquery 外部?

    下面是被调用以在搜索框中显示自动完成功能的函数 我希望自动完成功能在模糊或单击搜索框外部时消失 请告诉我应该在此函数中添加什么以使自动完成功能消失点击外面时向下消失 function hideLoader sub cont fadeIn 1
  • password_hash 到底是如何工作的?

    我试图理解密码哈希值充分以便能够向审核员解释 根据我对答案的寻找 我了解到password hash 函数是一个包装器crypt 在阅读 PHP 手册时预定义常量我看到它使用PASSWORD BCRYPT作为默认整数值 基本上它使用CRYP
  • PDO SQLite查询零结果问题

    我环顾四周 但似乎找不到任何有关此的信息 我不确定这是我的代码的问题还是内存 SQLite 数据库和 PDO 的已知问题 基本上 在将单行插入内存 SQLite 数据库表后 我希望与插入项不匹配的查询返回零行 但是 以下代码给出了一行 fa
  • 是否可以将 DataTable 作为 TextBox 中的 AutoCompleteSource? (C#)

    是否可以将 DataTable 作为 TextBox 中的 AutoCompleteSource C Jared 是正确的 如果不进行一些操作 就无法直接绑定 以下是使用 LINQ 数据集扩展检索字段作为自动完成源的示例 DataTable
  • Windows MIrror 驱动程序 远程显示驱动程序 VNC 服务器 Windows 8

    我正在开发远程桌面服务器的驱动程序 像 UltraVNC 内部协议 之类的东西 首先我发现 Windows 8 不支持镜像驱动程序 作为远程显示驱动程序的 DDI 的唯一子集 1 这是否意味着我需要为 Windows 8 实施远程显示驱动程
  • JavaScript:输入按键

    早上好 I am using java script in each page to trigger the Enter key press Event inside the textbox It is working fine Now i
  • 通过 Azure Powershell 设置 Azure 网站的主机名

    我正在尝试使用 PowerShell 将主机分配给 Azure 网站实例 我已验证要添加的域 主机是否有效 甚至转到 Azure 门户以验证其将新域识别为有效 但由于某种原因 下面的脚本没有像我认为应该的那样设置主机名 当我在为主机名设置新
  • 在运行时自动从 PowerShell 作业中提取数据

    当我试图做一些很可能超出 PowerShell 范围的事情时 我似乎遇到了障碍 我有一个主窗体脚本 它协调了我的大部分功能 但我需要另一个脚本来打开侦听器 system Net Sockets Udpclient Receive 并在整个程
  • 在 AWS Lambda 上安装新字体

    我正在 AWS Lambda 上安装 Imagemagick 但 Imagemagick 通常使用的字体似乎未预安装 如何添加其他字体 以下是我刚刚使用 pandoc xelatex 在 AWS Lambda 上处理自定义字体的工作 我假设
  • 使用 GDB 更改 JVM 中的变量值

    目前我有一个简单的Java程序 public class Test public static void main String args boolean test true while test System out println He
  • JavaFX 中滑块拇指的坐标

    有一些方法可以知道滑块拇指的位置JavaFX Use getBoundsInParent and a lookup Bounds bounds slider lookup thumb getBoundsInParent 您可能需要apply
  • 错误:SQLSTATE[HY000] [2002] 没有这样的文件或目录

    我知道这类问题可能被问过几次 但它们都与 laravel 有关 在我的例子中 这是没有框架的普通 php 我有一个表单 可以从用户那里收集表单并将其保存到数据库中 但我不断收到有关 MYSQL 的错误Error SQLSTATE HY000