首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MySQL 建表報錯:varchar 缺少長度參數完整解析

     編輯:程式設計綜合問答

問題現象

執行以下建表語句時,MySQL 拋出語法錯誤:

CREATE TABLE posts (
    post_id int(8) unsigned NOT NULL AUTO_INCREMENT,
    PRIMARY KEY(post_id),
    post_user_id int(8) unsigned,
    post_date int(10) unsigned,
    post_url varchar(100),
    post_title varchar(100),
    post_end_date int(10) unsigned,
    post_slogan varchar(10),
    post_content varchar,
    post_status char(1)
);

錯誤原因

倒數第二個字段 post_content varchar 未指定長度。MySQL 規定 VARCHAR 類型必須顯式聲明最大字符數,如 VARCHAR(255) 或 VARCHAR(1000)。

修正方案

為該字段補全長度,根據業務需求合理設置:

post_content varchar(1000),  -- 或 varchar(5000) 等

最佳實踐建議

  • 所有 VARCHAR、CHAR、DECIMAL 等需長度的類型,建表時必須顯式指定。
  • 使用 SHOW CREATE TABLE 或圖形化工具導出 DDL 時,仔細核對每個字段定義。
  • 開發階段啟用 sql_mode=STRICT_TRANS_TABLES,讓語法錯誤儘早暴露。

延伸知識:VARCHAR 長度選擇原則

實際存儲長度 = 字符數 + 1~2 字節長度前綴。VARCHAR(255) 以內用 1 字節前綴,超過則用 2 字節。建議根據業務最大長度預留 20% 冗餘,避免頻繁 ALTER TABLE 擴容導致鎖表。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved