升級提示 執行SQL發生錯誤!錯誤:duplicate column name: picstitle

黄文Rex發表於2024-10-04

針對 PbootCMS 升級過程中出現的 duplicate column name: picstitle 錯誤,可以透過手動執行 SQL 指令碼來解決此問題。以下是詳細的步驟和解決方案。

問題分析

在從 PbootCMS 3.0.5 及以下版本升級到 3.0.6 版本時,可能會出現 duplicate column name: picstitle 的錯誤。這通常是由於升級過程中 SQL 語句執行失敗導致的。

解決方案

  1. 備份資料庫

    • 在執行任何修改之前,務必先備份資料庫。
  2. 檢查現有表結構

    • 確認 picstitle 欄位是否已經存在於 ay_content 表中。
  3. 手動執行 SQL 指令碼

    • 如果 picstitle 欄位已經存在,跳過相關語句。
    • 執行其他新增欄位的 SQL 語句。

手動執行 SQL 指令碼

  1. 備份資料庫

    • 使用資料庫管理工具(如 phpMyAdmin、Sequelize 等)備份當前資料庫。
  2. 檢查表結構

    • 使用資料庫管理工具檢視 ay_content 表的結構。
    • 確認 picstitle 欄位是否存在。
    sql
    PRAGMA table_info(ay_content);
  3. 手動執行 SQL 指令碼

    • 如果 picstitle 欄位不存在,執行以下 SQL 語句:
    sql
    ALTER TABLE ay_content ADD COLUMN picstitle TEXT(1000) NOT NULL DEFAULT '';
    • 執行其他新增欄位的 SQL 語句:
    sql
    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 '';

完整的 SQL 指令碼

-- ----------------------------
-- Sqlite資料庫升級指令碼
-- 適用於PbootCMS 3.0.0版本升級至3.0.6
-- ----------------------------

-- 新增多圖示題欄位
ALTER TABLE ay_content ADD COLUMN IF NOT EXISTS picstitle TEXT(1000) NOT NULL DEFAULT '';

-- 欄目新增三個描述備用欄位
ALTER TABLE ay_content_sort ADD COLUMN IF NOT EXISTS def1 TEXT(1000) NOT NULL DEFAULT '';
ALTER TABLE ay_content_sort ADD COLUMN IF NOT EXISTS def2 TEXT(1000) NOT NULL DEFAULT '';
ALTER TABLE ay_content_sort ADD COLUMN IF NOT EXISTS def3 TEXT(1000) NOT NULL DEFAULT '';

執行 SQL 指令碼

  1. 登入資料庫

    • 使用 SQLite 資料庫管理工具(如 DB Browser for SQLite)登入資料庫。
  2. 執行 SQL 指令碼

    • 將上述 SQL 指令碼複製貼上到資料庫管理工具中並執行。

驗證結果

  1. 檢查表結構

    • 再次檢查 ay_contentay_content_sort 表的結構,確認新增欄位是否已成功新增。
    sql
    PRAGMA table_info(ay_content); PRAGMA table_info(ay_content_sort);
  2. 測試功能

    • 返回 PbootCMS 後臺,測試多圖上傳功能是否正常。

總結

透過以上步驟,你可以解決 PbootCMS 升級過程中出現的 duplicate column name: picstitle 錯誤。具體步驟包括:

  1. 備份資料庫:確保資料安全。
  2. 檢查表結構:確認欄位是否存在。
  3. 手動執行 SQL 指令碼:執行新增欄位的 SQL 語句。
  4. 驗證結果:檢查表結構並測試功能。

希望這些步驟能幫助你順利完成升級!

相關文章