PbootCMS错误提示:执行SQL发生错误!错误:no such column: def1
问题描述
-
错误提示:
执行SQL发生错误!错误:no such column: def1- 或者
错误:duplicate column name: picstitle
-
问题原因:
- PbootCMS 从 v3.0.5 及以下版本升级到 v3.0.6 后,新增了数据库字段(如
def1、def2、def3和picstitle)。 - 升级过程中,SQL 脚本未正确执行,导致数据库缺少这些字段或字段重复。
- PbootCMS 从 v3.0.5 及以下版本升级到 v3.0.6 后,新增了数据库字段(如
解决方案
步骤 1:确认当前数据库类型
PbootCMS 支持多种数据库(如 SQLite、MySQL 等)。需要根据实际使用的数据库类型选择对应的 SQL 语句执行方式。
- 如果使用的是 SQLite 数据库,请参考提供的 SQL 升级脚本。
- 如果使用的是 MySQL 数据库,需将脚本稍作调整(语法略有不同)。
步骤 2:手动执行 SQL 语句
以下是适用于 SQLite 的 SQL 升级脚本:
-- ----------------------------
-- Sqlite 数据库升级脚本
-- 适用于 PbootCMS 3.0.0 版本升级至 3.0.6
-- ----------------------------
--
-- 新增多图标题字段
--
ALTER TABLE ay_content ADD COLUMN picstitle TEXT(1000) NOT NULL DEFAULT '';
--
-- 栏目新增三个描述备用字段
--
ALTER TABLE ay_content_sort ADD COLUMN def1 TEXT(1000) NOT NULL DEFAULT '';
ALTER TABLE ay_content_sort ADD COLUMN def2 TEXT(1000) NOT NULL DEFAULT '';
ALTER TABLE ay_content_sort ADD COLUMN def3 TEXT(1000) NOT NULL DEFAULT '';注意事项:
-
字段已存在时的处理:
- 如果执行时提示
duplicate column name(字段已存在),说明该字段已经添加过,无需再次执行对应语句。 - 可以注释掉相关语句,避免重复执行。例如:
sql
-- ALTER TABLE ay_content ADD COLUMN picstitle TEXT(1000) NOT NULL DEFAULT '';
- 如果执行时提示
-
字段缺失时的处理:
- 如果提示
no such column,说明字段确实缺失,需确保完整执行所有语句。
- 如果提示
步骤 3:如何执行 SQL
-
SQLite 数据库:
- 使用 SQLite 数据库管理工具(如 DB Browser for SQLite)打开数据库文件。
- 在工具中执行上述 SQL 语句。
- 保存并关闭数据库。
-
MySQL 数据库:
- 登录 MySQL 数据库(可通过 phpMyAdmin 或命令行)。
- 修改 SQL 语句为 MySQL 兼容格式。例如:
ALTER TABLE ay_content ADD COLUMN picstitle VARCHAR(1000) NOT NULL DEFAULT ''; ALTER TABLE ay_content_sort ADD COLUMN def1 VARCHAR(1000) NOT NULL DEFAULT ''; ALTER TABLE ay_content_sort ADD COLUMN def2 VARCHAR(1000) NOT NULL DEFAULT ''; ALTER TABLE ay_content_sort ADD COLUMN def3 VARCHAR(1000) NOT NULL DEFAULT ''; - 执行修改后的 SQL 语句。
验证修复结果
- 返回 PbootCMS 后台,重新操作栏目管理功能。
- 检查是否仍然出现
no such column或duplicate column name错误。 - 如果问题解决,则表示修复成功。

扫码添加技术【解决问题】
专注网站运营、网站安全十余年。
专业解决各种疑难杂症,您有任何网站问题都可联系我们技术人员。
本文来自博客园,作者:Henry王,转载请注明原文链接:https://www.cnblogs.com/heneryw/p/19307400

浙公网安备 33010602011771号