You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CPanel共享主机安装FaucetInABox遇SQL错误求助

问题分析与解决方案

错误1:SQL语法错误(IF NOT EXISTS不支持)

原因

共享主机搭载的MySQL版本低于8.0,而ALTER TABLE ADD COLUMN IF NOT EXISTS是MySQL 8.0才引入的语法,低版本不兼容该写法,导致语法报错。

解决步骤

  1. 登录CPanel,打开文件管理器,定位到/home/faucetl8/public_html/bnb/script/install.php
  2. 找到第222行的ALTER TABLE语句,移除其中的IF NOT EXISTS关键字。例如原语句:
    ALTER TABLE `FaucetTable` ADD COLUMN IF NOT EXISTS `first_used` timestamp NOT NULL DEFAULT current_timestamp()
    
    修改为:
    ALTER TABLE `FaucetTable` ADD COLUMN `first_used` timestamp NOT NULL DEFAULT current_timestamp()
    

错误2:重复列名(users_returned已存在)

原因

安装脚本未判断列是否已存在就重复执行添加操作,触发Duplicate column name错误。

解决步骤

根据MySQL版本选择对应处理方式:

方式1:MySQL 8.0及以上版本

在添加users_returned列的语句中保留IF NOT EXISTS,确保仅当列不存在时执行添加:

ALTER TABLE `FaucetTable` ADD COLUMN IF NOT EXISTS `users_returned` [替换为该列的原始定义,例如INT(11) NOT NULL DEFAULT 0]

方式2:MySQL 8.0以下版本

由于低版本不支持IF NOT EXISTS,需通过代码先判断列是否存在,再执行添加:
将第222行的原始ALTER TABLE语句替换为以下PHP代码:

// 检查first_used列是否存在,不存在则添加
$checkFirstUsed = $pdo->query("SHOW COLUMNS FROM `FaucetTable` LIKE 'first_used'");
if (!$checkFirstUsed->rowCount()) {
    $pdo->exec("ALTER TABLE `FaucetTable` ADD COLUMN `first_used` timestamp NOT NULL DEFAULT current_timestamp()");
}

// 检查users_returned列是否存在,不存在则添加
$checkUsersReturned = $pdo->query("SHOW COLUMNS FROM `FaucetTable` LIKE 'users_returned'");
if (!$checkUsersReturned->rowCount()) {
    // 替换下方[]内的内容为该列的原始定义
    $pdo->exec("ALTER TABLE `FaucetTable` ADD COLUMN `users_returned` [例如INT(11) NOT NULL DEFAULT 0]");
}

最终操作

修改完成后保存install.php,重新访问站点即可完成安装。

内容的提问来源于stack exchange,提问作者Ithoughtiwouldneverneedstack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 21:08:21