test_db_connection.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. // 测试数据库连接脚本
  3. // 加载框架基础文件
  4. define('APP_PATH', __DIR__ . '/app/');
  5. require __DIR__ . '/vendor/skycaiji/tp/base.php';
  6. // 尝试获取数据库连接
  7. $dbConfig = hink\Config::get('database');
  8. if(empty($dbConfig)){
  9. echo '未找到数据库配置!';
  10. exit;
  11. }
  12. // 打印数据库配置信息(隐藏密码)
  13. $displayConfig = $dbConfig;
  14. if(isset($displayConfig['password'])){
  15. $displayConfig['password'] = '******';
  16. }
  17. echo '数据库配置:<br>';
  18. echo '<pre>';
  19. print_r($displayConfig);
  20. echo '</pre>';
  21. echo '<br><br>开始测试数据库连接...<br><br>';
  22. // 尝试连接数据库
  23. try {
  24. // 使用PDO直接连接测试
  25. $dsn = "mysql:host={$dbConfig['hostname']};dbname={$dbConfig['database']};port={$dbConfig['hostport']}";
  26. $pdo = new PDO($dsn, $dbConfig['username'], $dbConfig['password']);
  27. // 设置错误模式
  28. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  29. // 测试查询
  30. $stmt = $pdo->query('SELECT VERSION() as version, DATABASE() as dbname');
  31. $result = $stmt->fetch(PDO::FETCH_ASSOC);
  32. echo '<span style="color: green;">✓ 数据库连接成功!</span><br>';
  33. echo 'MySQL版本:' . $result['version'] . '<br>';
  34. echo '当前数据库:' . $result['dbname'] . '<br>';
  35. // 检查skycaiji_user表是否存在
  36. $stmt = $pdo->query("SHOW TABLES LIKE 'skycaiji_user'");
  37. if($stmt->rowCount() > 0){
  38. echo 'skycaiji_user表存在<br>';
  39. // 查询用户表记录数
  40. $stmt = $pdo->query("SELECT COUNT(*) as count FROM skycaiji_user");
  41. $countResult = $stmt->fetch(PDO::FETCH_ASSOC);
  42. echo '用户表记录数:' . $countResult['count'] . '<br>';
  43. } else {
  44. echo '<span style="color: orange;">! skycaiji_user表不存在</span><br>';
  45. }
  46. $pdo = null;
  47. } catch (PDOException $e) {
  48. echo '<span style="color: red;">✗ 数据库连接失败:' . $e->getMessage() . '</span><br>';
  49. // 尝试使用框架的Db类连接
  50. try {
  51. echo '<br>尝试使用框架Db类连接...<br>';
  52. $db = hink\Db::connect();
  53. $result = $db->query('SELECT VERSION() as version');
  54. echo '<span style="color: green;">✓ 框架Db类连接成功!</span><br>';
  55. echo 'MySQL版本:' . $result[0]['version'] . '<br>';
  56. } catch (Exception $e2) {
  57. echo '<span style="color: red;">✗ 框架Db类连接也失败:' . $e2->getMessage() . '</span><br>';
  58. }
  59. }
  60. // 尝试使用模型访问
  61. echo '<br><br>尝试使用用户模型...<br>';
  62. try {
  63. // 注册模型命名空间
  64. \think\Loader::addNamespace('app', __DIR__ . '/app/');
  65. $userModel = new \app\admin\model\User();
  66. if($userModel){
  67. echo '<span style="color: green;">✓ 成功实例化User模型</span><br>';
  68. // 尝试查询
  69. try {
  70. $count = $userModel->count();
  71. echo 'User模型查询成功,共有 ' . $count . ' 个用户记录<br>';
  72. } catch (Exception $e3) {
  73. echo '<span style="color: orange;">! User模型查询失败:' . $e3->getMessage() . '</span><br>';
  74. }
  75. } else {
  76. echo '<span style="color: red;">✗ 无法实例化User模型</span><br>';
  77. }
  78. } catch (Exception $e4) {
  79. echo '<span style="color: red;">✗ 模型测试失败:' . $e4->getMessage() . '</span><br>';
  80. }
  81. echo '<br><br>测试完成时间:' . date('Y-m-d H:i:s');