Karp 的技术博客

PHP 1146 错误是一个常见的数据库连接错误,通常由于连接信息错误或数据库服务不可用所导致。本文将为你提供一步步的排查与解决方案,帮助你轻松解决该问题。


1. 了解 PHP 1146 错误

1.1 错误信息示例

当出现 PHP 1146 错误时,常见的错误提示如下:

Warning: mysqli_real_connect(): (HY000/1146): A database is being accessed in an illegal mode: Cannot access database

1.2 错误原因

常见的导致 PHP 1146 错误的原因包括:

  • 数据库连接信息错误(主机名、用户名、密码、数据库名等)。
  • 数据库服务未运行或被防火墙阻止。
  • MySQL 用户权限不足,无法访问指定数据库。

2. 解决 PHP 1146 错误的方法

2.1 检查数据库连接信息

确保以下信息输入正确:

  • 主机名:通常为 localhost,如果使用远程数据库,请输入对应主机地址。
  • 用户名与密码:确认输入的用户名和密码正确无误。
  • 数据库名:数据库名必须正确匹配已存在的数据库。

2.2 检查数据库服务状态

  • MySQL 是否运行中

    • Windows:使用“服务管理器”确认 MySQL 服务状态。
    • Linux / macOS:

      systemctl status mysql
  • 防火墙设置

    • 确保 MySQL 默认端口 3306 未被防火墙阻止。
    • 可临时关闭防火墙测试连接是否恢复。

2.3 检查 MySQL 用户权限

  1. 登录 MySQL

    mysql -u your_username -p
  2. 查看用户权限

    SELECT * FROM mysql.user WHERE User = 'your_username';
  3. 修改权限(如有需要)

    GRANT ALL PRIVILEGES ON your_database.* TO 'your_username'@'localhost';
    FLUSH PRIVILEGES;
⚠️ 如果无法修改权限,请联系数据库管理员。

2.4 示例代码:PHP 连接 MySQL 数据库

<?php
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检测连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
?>

3. 总结

通过以下几个步骤,你可以有效排查并解决 PHP 1146 错误:

  • ✅ 确认数据库连接信息是否正确;
  • ✅ 检查数据库服务是否正常运行;
  • ✅ 检查 MySQL 用户是否有足够权限;
  • ✅ 使用 PHP 编写并测试数据库连接代码。

php

版权属于:karp
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
更新于: 2025年07月24日 14:33
0

目录

来自 《解决 PHP 1146 错误的完整指南》