AI SREClickHouse Workshops

การแก้ปัญหา

แหล่งอ้างอิงอาการ สาเหตุ และวิธีแก้ของทุกความล้มเหลวที่พบขณะสร้างและทดสอบเวิร์กช็อปนี้ จัดกลุ่มตามจุดที่มันปรากฏ

Your computer
macOS terminal: Run workshop commands in Terminal using zsh or bash.

ทุกรายการด้านล่างเป็นความล้มเหลวที่เกิดขึ้นจริงขณะสร้างและทดสอบเวิร์กช็อป นี้ หาอาการของคุณ อ่านสาเหตุ แล้วลงมือแก้ ถ้าไม่มีอะไรตรงกันเลย ให้ส่ง ปัญหาให้ coding agent ของคุณ - คู่มือการเรียนด้วยตัวเอง มี prompt ที่พร้อมวางซึ่งเปลี่ยนมันให้เป็นผู้สอนของคุณ

Windows และ WSL 2

wsl --install ใช้ไม่ได้หรือพิมพ์แค่ help

  • อาการ - PowerShell แบบ Administrator ไม่รู้จัก wsl --install หรือมันพิมพ์ help ออกมาแทนที่จะติดตั้ง Ubuntu
  • สาเหตุ - Windows ต่ำกว่าขั้นต่ำของเวิร์กช็อป อัปเดตที่ค้างอยู่ยังไม่ได้ติดตั้ง หรือนโยบายองค์กรปิด WSL ไว้
  • วิธีแก้ - รัน Windows Update และยืนยันว่าเป็น Windows 11 หรือ Windows 10 เวอร์ชัน 2004 (build 19041) ขึ้นไป รีสตาร์ท แล้วทำตาม ขั้นตอนติดตั้ง WSL แบบแมนวลของ Microsoft บนเครื่องที่องค์กรจัดการ ผู้ดูแลระบบต้องอนุญาตฟีเจอร์ของ Windows ที่จำเป็น

คำสั่งขึ้นว่า "not recognized" ใน PowerShell

  • อาการ - PowerShell ปฏิเสธ ./preflight.sh, export, source หรือคำสั่ง Bash อื่นจากเวิร์กช็อป

  • สาเหตุ - การติดตั้งบน Windows ใช้ PowerShell เฉพาะสำหรับการ bootstrap WSL ที่ระบุไว้ชัดเจน คำสั่งของเวิร์กช็อปรันภายใน Ubuntu บน WSL 2

  • วิธีแก้ - เปิด Ubuntu จากเมนู Start แล้วกลับไปที่ไดเรกทอรีของแอปและรัน preflight ที่นั่น:

    cd ~/ClickHouse_Demos/workshops/build_workshop/app
    ./preflight.sh

repository อยู่ใต้ /mnt/c

  • อาการ - bind mount ของ Docker ช้า สคริปต์มีปัญหาสิทธิ์หรือการขึ้นบรรทัดใหม่ หรือพาธของ repository เริ่มด้วย /mnt/c/Users/...

  • สาเหตุ - repository ถูกโคลนลงบนไฟล์ระบบของ Windows แทนที่จะเป็นไฟล์ระบบ Linux ของ WSL

  • วิธีแก้ - เก็บสำเนาเก่าไว้เฉพาะเมื่อคุณต้องการงานที่ยังไม่ commit ถ้าไม่ ให้เปิด Ubuntu และโคลนสำเนาใหม่ที่สะอาดในไดเรกทอรีบ้านของ Linux:

    cd ~
    git config --global core.autocrlf input
    git clone https://github.com/ClickHouse/ClickHouse_Demos.git
    cd ClickHouse_Demos
    git switch build-workshop-v1
    cd workshops/build_workshop/app
    cp .env.workshop.example .env.workshop

Ubuntu รันเป็น WSL 1

  • อาการ - wsl --list --verbose แสดง Ubuntu เป็น VERSION 1 หรือ Docker Desktop ผสานกับ distro ไม่ได้

  • สาเหตุ - distro มีมาก่อน WSL 2 หรือถูกติดตั้งโดยมี WSL 1 เป็นค่าเริ่มต้น

  • วิธีแก้ - เปิด PowerShell as Administrator แปลงมัน แล้วเปิด Ubuntu ใหม่:

    wsl --set-version Ubuntu 2
    wsl --set-default-version 2
    wsl --list --verbose

docker ใช้ไม่ได้ภายใน Ubuntu

  • อาการ - Docker Desktop รันอยู่ แต่ Ubuntu บอกว่า docker: command not found หรือ ติดต่อ daemon ไม่ได้
  • สาเหตุ - เอนจิน WSL ของ Docker Desktop หรือการผสานกับ Ubuntu ถูกปิดอยู่
  • วิธีแก้ - เปิด Docker Desktop -> Settings -> General -> Use the WSL 2 based engine และ Resources -> WSL Integration -> Ubuntu ใช้การเปลี่ยนแปลง แล้วรัน wsl --shutdown ใน PowerShell และเปิด Ubuntu ใหม่ แล้ว docker version ต้องแสดงทั้งส่วน Client และ Server

WSL หรือ Docker มีหน่วยความจำน้อยกว่า 6 GB

  • อาการ - preflight รายงานว่าหน่วยความจำไม่พอ หรือ docker info --format 'Docker memory: {{.MemTotal}} bytes' พิมพ์ค่าน้อยกว่า 6442450944 ไบต์

  • สาเหตุ - แบ็กเอนด์ WSL 2 ของ Docker Desktop ใช้ขีดจำกัดหน่วยความจำของเครื่องเสมือน WSL

  • วิธีแก้ - ปิด Docker Desktop เปิด PowerShell และสร้างขีดจำกัด WSL ที่ 8 GB:

    @('[wsl2]', 'memory=8GB', 'processors=4') |
      Set-Content -Encoding ascii "$env:USERPROFILE\.wslconfig"
    wsl --shutdown

    เริ่ม Docker Desktop และเปิด Ubuntu ใหม่ รันคำสั่ง docker info และ preflight อีกครั้ง

สคริปต์รายงาน /usr/bin/env: 'bash\r': No such file or directory

  • อาการ - ไฟล์ .sh ล้มเหลวทันทีและข้อผิดพลาดมี bash\r หรือ ^M

  • สาเหตุ - การขึ้นบรรทัดใหม่แบบ CRLF ของ Windows แทนที่การขึ้นบรรทัดแบบ LF ที่ repository ต้องการ

  • วิธีแก้ - ใน Ubuntu ให้ตั้งนโยบาย WSL ของ Git และกู้คืน checkout ที่สะอาด:

    git config --global core.autocrlf input
    git status --short
    git add --renormalize .

    ตรวจ git status ก่อนจะทิ้งหรือ commit อะไร ถ้า checkout ไม่มี งานที่คุณต้องการ การโคลนใหม่ที่สะอาดใต้ ~/ClickHouse_Demos เป็นการกู้คืนที่ปลอดภัยที่สุด

OAuth ไม่เปิดเบราว์เซอร์ของ Windows

  • อาการ - การล็อกอิน MCP พิมพ์ URL ออกมาแต่ไม่มีหน้าต่างเบราว์เซอร์เปิดขึ้น
  • สาเหตุ - coding agent รันอยู่ภายใน WSL และการส่งต่อเบราว์เซอร์ใช้ไม่ได้ หรือถูกนโยบายองค์กรบล็อก
  • วิธีแก้ - คัดลอก URL ล็อกอินฉบับเต็มจาก Ubuntu และวางลงในเบราว์เซอร์ปกติของ Windows ทำการอนุญาตให้เสร็จที่นั่น แล้วกลับไปที่เทอร์มินัล Ubuntu

Docker

คอนเทนเนอร์ค้างอยู่ที่ "Created" และไม่เริ่มทำงาน

  • อาการ - docker info ตอบได้ปกติ แต่ docker compose ... up ทำให้คอนเทนเนอร์ค้าง อยู่ที่ Created และไม่มีอะไรกลายเป็น healthy
  • สาเหตุ - เอนจิน Docker ติดขัด: daemon ตอบสนอง แต่จริง ๆ มันเริ่ม คอนเทนเนอร์ไม่ได้ พบกับ OrbStack ตอนยกระบบขึ้นแบบสด
  • วิธีแก้ - รีสตาร์ทเอนจิน Docker ของคุณ (Docker Desktop, OrbStack หรือ Colima) และรอจนกว่า มันรายงานว่า Running แล้วยกสแต็กขึ้นอีกครั้ง จากที่ไหนก็ได้ภายใน repository ที่โคลนมา ให้รัน cd "$(git rev-parse --show-toplevel)/workshops/build_workshop/app" && ./preflight.sh มันจับปัญหานี้ได้ก่อนคุณจะเริ่มสแต็ก โดยการรันคอนเทนเนอร์แบบใช้แล้วทิ้งเป็นการทดสอบ

"port is already allocated" ตอน up

  • อาการ - docker compose ... up ล้มเหลวด้วย Bind for 0.0.0.0:8080 failed: port is already allocated (หรือ :8000)
  • สาเหตุ - โปรเซสอื่น หรือคอนเทนเนอร์เวิร์กช็อปเก่า ถือพอร์ตของโฮสต์นั้นอยู่แล้ว
  • วิธีแก้ - จากที่ไหนก็ได้ภายใน repository ที่โคลนมา ให้รัน cd "$(git rev-parse --show-toplevel)/workshops/build_workshop/app" && ./preflight.sh มันจะบอกว่าอะไรถือพอร์ตอยู่และพิมพ์ค่า override ที่ต้องตั้งอย่างแน่นอน ตามธรรมเนียม พอร์ตพื้นฐาน + 20000 ตัวอย่าง set FRONTEND_HOST_PORT=28080 in .env.workshop ตัวแปร override คือ FRONTEND_HOST_PORT, BACKEND_HOST_PORT และสำหรับ overlay ของ observability คือ OTEL_GRPC_HOST_PORT / OTEL_HTTP_HOST_PORT ตั้งค่าที่แนะนำ รัน preflight ใหม่ แล้วเริ่มสแต็ก มีเพียงพอร์ตของโฮสต์ที่ย้าย พอร์ตในคอนเทนเนอร์ ไม่เปลี่ยน ดังนั้นวิธีนี้ปลอดภัย

คำเตือน "platform does not match"

  • อาการ - Docker พิมพ์คำเตือนเรื่องแพลตฟอร์มไม่ตรงกัน (ตัวอย่าง linux/amd64 กับ linux/arm64) ตอน pull หรือ up
  • สาเหตุ - อิมเมจถูก build สำหรับสถาปัตยกรรม CPU ที่ต่างจากเครื่องของคุณ พบบ่อย บน Apple Silicon
  • วิธีแก้ - ไม่เป็นอันตราย มันเป็นคำเตือน ไม่ใช่ความล้มเหลว อิมเมจรันผ่านการจำลอง ปล่อย ให้มันดำเนินต่อ

ClickHouse Cloud

คำขอแรกหลัง idle ช้าหรือขึ้น 500 หนึ่งครั้ง

  • อาการ - คิวรีหรือการโหลดแดชบอร์ดครั้งแรกหลังเซอร์วิสอยู่ในสถานะ idle นั้นช้า หรือคำขอขึ้น 500 หนึ่งครั้งแล้วก็ใช้งานได้
  • สาเหตุ - เซอร์วิส Cloud ปรับสเกลลงเหลือศูนย์ตอน idle และใช้เวลาประมาณ 30 วินาทีในการตื่น คำขอแรกจ่ายต้นทุนการตื่นนั้น แบ็กเอนด์อนุญาต timeout ของการเชื่อมต่อครั้งแรกให้นานขึ้น และลองใหม่หนึ่งครั้งอยู่แล้ว
  • วิธีแก้ - ลองใหม่ หรือรอประมาณ 30 วินาที นี่ไม่ใช่ความผิดพลาด มันสำคัญใน 07 ทดสอบ ล้มเหลว และแก้ไข ด้วย: เซอร์วิสที่กำลังตื่นทำให้ timeout ของ fault 03 เกิดขึ้นง่ายกว่า

ทำรหัสผ่านของเซอร์วิสหาย

  • อาการ - คุณไม่ได้บันทึกรหัสผ่านของผู้ใช้ default และหามันไม่เจอ
  • สาเหตุ - รหัสผ่านของเซอร์วิสไม่ถูกแสดงอีกหลังคุณออกจากขั้นตอนการสร้าง
  • วิธีแก้ - เปิดเซอร์วิส ไปที่ Settings ของมันและรีเซ็ตรหัสผ่านของผู้ใช้ default แล้วอัปเดต CLICKHOUSE_PASSWORD ใน .env.workshop ชื่อโฮสต์หาได้เสมอจาก โมดัล Connect

ทำรหัสผ่านของ managed Postgres หาย

  • อาการ - คุณไม่ได้บันทึกรหัสผ่านแอดมิน postgres แบบใช้ครั้งเดียวจาก clickhousectl cloud postgres create
  • สาเหตุ - มันถูกแสดงเพียงครั้งเดียว และ API postgres get / list ที่ยังเป็นเบต้าอาจคืน ค่าว่างหรือ FORBIDDEN แม้ขณะที่อินสแตนซ์สุขภาพดี
  • วิธีแก้ - clickhousectl cloud postgres reset-password <service-id> แล้วใช้รหัสผ่าน ใหม่ใน .env.workshop (PGPASSWORD) และในการเชื่อมต่อของ ClickPipe

เข้าถึง ClickHouse Cloud ไม่ได้

  • อาการ - preflight FAIL ที่การตรวจการเชื่อมต่อ หรือแบ็กเอนด์เชื่อมต่อไม่ได้ the command below ล้มเหลว

    CLICKHOUSE_HOST=$(sed -n 's/^CLICKHOUSE_HOST=//p' .env.workshop | tail -n 1)
    CLICKHOUSE_PORT=$(sed -n 's/^CLICKHOUSE_PORT=//p' .env.workshop | tail -n 1)
    curl "https://$CLICKHOUSE_HOST:$CLICKHOUSE_PORT/ping"
  • สาเหตุ - wifi, VPN หรือไฟร์วอลล์ โฮสต์ผิด (มี scheme หรือพอร์ตวางไว้ใน CLICKHOUSE_HOST) TLS หรือพอร์ตไม่ตรงกัน หรือ IP access list ของ Cloud บล็อก IP ของคุณ

  • วิธีแก้ - ยืนยันว่า CLICKHOUSE_HOST เป็นชื่อโฮสต์เปล่า (ไม่มี https:// ไม่มีพอร์ต) CLICKHOUSE_PORT=8443 และ CLICKHOUSE_SECURE=true ตรวจ VPN และไฟร์วอลล์ ยืนยันว่า IP access list ของเซอร์วิสอนุญาตที่อยู่ของคุณ preflight จะบอกความล้มเหลวที่เจาะจง - DNS ถูกปฏิเสธ หมดเวลา หรือ TLS handshake

ไคลเอนต์พิมพ์ Unknown settings: ... skipping

  • อาการ - คิวรีสำเร็จ แต่ทุกครั้งที่เรียกจะพิมพ์คำเตือน unknown-setting
  • สาเหตุ - ไคลเอนต์ที่ติดตั้งในเครื่องใหม่กว่าเซิร์ฟเวอร์ Cloud และส่ง การตั้งค่าที่เซิร์ฟเวอร์รุ่นนั้นไม่รู้จัก
  • วิธีแก้ - ทำคำสั่งจับคู่ไคลเอนต์ในโมดูล 00 ขั้นที่ 6 ซ้ำ พวกมันจะอ่านเวอร์ชันของ เซิร์ฟเวอร์ Cloud ผ่าน clickhousectl และเลือกไคลเอนต์รุ่น major/minor ที่ตรงกัน ห้ามซ่อนคำเตือนของไคลเอนต์ทั้งหมดด้วย --no-warnings

CDC (โมดูล 03)

การสร้าง ClickPipe บอกว่า table realtime_trips exists and is not empty

  • อาการ - ไม่มีทรัพยากร ClickPipe อยู่ แต่การสร้างใหม่ล้มเหลวเพราะ default.realtime_trips มีแถวอยู่แล้ว

  • สาเหตุ - การลบ ClickPipe จะเอา replication slot ต้นทางของมันออก แต่อาจทิ้ง ตารางปลายทางไว้ ไปป์ตัวใหม่จะไม่เขียนทับตารางที่ไม่ว่างนั้น

  • วิธีแก้ - รักษาแถวดิบเก่าไว้ใต้ชื่อสำรองที่มี timestamp แล้วสร้าง ไปป์ใหม่ แทนที่ตัวยึด service ID ครั้งเดียว คำสั่งเหล่านี้ยังรักษา materialized view เก่าไว้เมื่อมันมีอยู่:

    CH_SERVICE_ID=<clickhouse-service-id>
    BACKUP_SUFFIX=$(date -u +%Y%m%d%H%M%S)
    
    if clickhousectl cloud service query --id "$CH_SERVICE_ID" \
      --query "EXISTS TABLE nyc_tlc_data.realtime_trips_to_taxi_trips_mv" | grep -q 1; then
      clickhousectl cloud service query --id "$CH_SERVICE_ID" --query "
        RENAME TABLE nyc_tlc_data.realtime_trips_to_taxi_trips_mv
        TO nyc_tlc_data.realtime_trips_to_taxi_trips_mv_backup_${BACKUP_SUFFIX}
      "
    fi
    
    clickhousectl cloud service query --id "$CH_SERVICE_ID" --query "
      RENAME TABLE default.realtime_trips
      TO default.realtime_trips_backup_${BACKUP_SUFFIX}
    "

    รันโมดูล 03 ขั้นที่ 3 ใหม่และรอตาราง default.realtime_trips ตัวใหม่ก่อน จะสร้าง materialized view ตัวหลักใหม่ในขั้นที่ 4 ลบข้อมูลสำรองที่มี timestamp ในภายหลังเฉพาะเมื่อคุณยืนยันแล้วว่าไม่ต้องการข้อมูลของมันอีก

ClickPipe ค้างอยู่ที่ "Provisioning"

  • อาการ - ไปป์แสดง Provisioning อยู่พักหนึ่งหลังคุณสร้างมัน
  • สาเหตุ - การทำ snapshot และการเริ่มโครงสร้างพื้นฐานมักใช้เวลาสองสามนาที แต่อาจใช้ เวลานานกว่า 10 นาทีแม้กับตารางเล็กขนาดนี้
  • วิธีแก้ - ตรวจความคืบหน้าในคอนโซล หรือด้วยทั้ง clickhousectl cloud clickpipe list <clickhouse-service-id> และ clickhousectl cloud clickpipe get <clickhouse-service-id> <clickpipe-id> ในช่วง สองสามนาทีแรก ให้รอต่อไปขณะที่สถานะหรือค่า updatedAt ของมันเดินหน้า ถ้ามัน ยังเป็น Provisioning โดยไม่มีการอัปเดตหลัง 10 นาที ให้ยืนยันว่า log ของ pg-trip-writer ยัง insert อยู่ ตรวจโฮสต์ ข้อมูลรับรอง publication และการแมปตารางซ้ำ และ ดูข้อผิดพลาดที่ไปป์รายงาน ห้ามสร้างไปป์ตัวที่สองหรือ materialized view ขณะที่ตัวแรกยัง provisioning อยู่ ถ้าการตรวจต้นทางผ่านและ Cloud ไม่รายงาน ข้อผิดพลาดที่ทำอะไรได้ ให้บันทึกผลลัพธ์ของ get ไว้และส่งต่อให้ผู้สอนหรือฝ่ายสนับสนุนของ ClickHouse Cloud

แถวไม่มาถึง ClickHouse

  • อาการ - ไปป์เป็น Running แต่จำนวนแถวปลายทางไม่โต และ แดชบอร์ด Ops ไม่ขยับ
  • สาเหตุ - ช่วงเวลา sync เริ่มต้นอยู่ประมาณ 60 วินาที ดังนั้นคาดว่าจะมีความหน่วง หรือตัวสร้างข้อมูล ไม่ได้ insert หรือ publication ที่ไปป์อ่านไม่มีอยู่
  • วิธีแก้ - รออย่างน้อย 60 วินาที ตรวจว่า log ของ pg-trip-writer แสดง inserted N trips และแสดงอย่างใดอย่างหนึ่งระหว่าง created publication pub_taxi (อินสแตนซ์ของคุณเอง) หรือ publication ... already exists (ตัวสำรองแบบ managed ที่ผู้สอนให้มา) ยืนยันว่าสถานะของไปป์เป็น Running ถ้า publication ไม่มีอยู่ ไปป์ก็ไม่มีอะไรให้อ่าน - ตัวสร้างข้อมูลจะสร้างมันในการรันครั้งแรกกับ อินสแตนซ์ที่คุณเป็นแอดมิน

materialized view ไม่มีแถว

  • อาการ - realtime_trips มีข้อมูลเข้ามา แต่ taxi_trips (ที่ป้อนโดย materialized view ของ CDC) ยังว่างอยู่

  • สาเหตุ - materialized view ถูกสร้างก่อนที่เป้าหมายของ ClickPipe จะมีอยู่ หรือมัน ไม่ได้อ่านเป้าหมายของ CLI ที่ default.realtime_trips

  • วิธีแก้ - รอตารางเป้าหมาย แล้วคัดลอกคำสั่ง materialized view ฉบับเต็ม จาก โมดูล 03 ขั้นที่ 4 ตรวจสอบต้นทางก่อน:

    clickhousectl cloud service query --id <clickhouse-service-id> --query "
      SELECT database, name, engine
      FROM system.tables
      WHERE name = 'realtime_trips'
    "

    materialized view ประมวลผลแถวที่ถูก insert หลังจากมันมีอยู่ ให้ตัวเขียนข้อมูลการเดินทาง รันต่อไปหลังการสร้าง

replication slot หยุดนิ่ง

  • อาการ - ไปป์หยุดนิ่งและ WAL โตขึ้นบน Postgres ต้นทาง
  • สาเหตุ - slot ที่หยุดนิ่งจะเก็บ WAL ไว้ การ resync จะสร้าง slot ใหม่
  • วิธีแก้ - บน Postgres แบบ managed ของคุณเอง (slot เดียว มีที่เหลือเยอะ) ให้ resync ไปป์ จากคอนโซลได้เลย การลบไปป์จะทิ้ง slot ของมันบนต้นทาง พูลตัวสำรองแบบ managed ที่ผู้สอนเตรียมไว้ เป็นเรื่องฝั่งผู้สอน - ดู infra/README.md

ตัวแปรสภาพแวดล้อม

การ export ในเชลล์ทับ .env.workshop

  • อาการ - คุณตั้งค่าใน .env.workshop แต่คอนเทนเนอร์ใช้ค่าอื่น (มักเป็น OPENAI_API_KEY เก่า, LANGFUSE_* หรือ CLICKHOUSE_PASSWORD)
  • สาเหตุ - docker compose แทนค่า ${VAR} จากเชลล์ของคุณก่อน และตัวแปรเชลล์ ที่ export แล้วชนะไฟล์
  • วิธีแก้ - ในเชลล์ที่คุณรัน compose ให้ unset OPENAI_API_KEY LANGFUSE_PUBLIC_KEY LANGFUSE_SECRET_KEY LANGFUSE_BASE_URL CLICKHOUSE_PASSWORD แล้วยกสแต็กขึ้นอีกครั้ง preflight จะเตือนเมื่อมันตรวจพบสิ่งนี้

คีย์ซ้ำใน .env.workshop

  • อาการ - ค่าที่คุณตั้งในไฟล์ถูกเมิน
  • สาเหตุ - คีย์เดียวกันปรากฏสองครั้ง ตัวที่ปรากฏหลังสุดชนะ ตรงกับความหมายของ docker compose (preflight อ่านมันแบบเดียวกัน)
  • วิธีแก้ - ลบตัวซ้ำที่อยู่ก่อนหน้าออก เพื่อให้เหลือเฉพาะค่าที่ต้องการ

แชท (โมดูล 08)

POST /api/chat คืน 503 พร้อมคำใบ้เรื่องการติดตั้ง

  • อาการ - แผงแชทแสดงคำใบ้เรื่องการติดตั้งและ /api/chat คืน 503 ส่วนที่เหลือ ของแอปปกติ
  • สาเหตุ - ไม่มีการตั้ง OPENAI_API_KEY บนแบ็กเอนด์
  • วิธีแก้ - เพิ่ม OPENAI_API_KEY ใน .env.workshop แล้ว docker compose --env-file .env.workshop -f docker-compose.workshop.yml -f docker-compose.otel.yml up -d --build backend แชทเป็นฟีเจอร์เดียวที่ต้องใช้มัน

สร้างคีย์ OpenAI ครั้งแรกไม่ได้

  • อาการ - OpenAI ไม่ออกคีย์ API ให้บัญชีใหม่
  • สาเหตุ - บัญชีใหม่ต้องยืนยันหมายเลขโทรศัพท์ครั้งเดียวและไม่มีเครดิตฟรี
  • วิธีแก้ - ทำการยืนยันโทรศัพท์ให้เสร็จ แล้วไปที่ Settings -> Billing: เพิ่มวิธีชำระเงิน และซื้อเครดิตแบบเติมล่วงหน้าขั้นต่ำ $5 ปิด auto-recharge (มันเปิดอยู่ โดยค่าเริ่มต้นตอนติดตั้ง) เพื่อให้คุณไม่ถูกเรียกเก็บเกิน $5 ที่คุณเติมไป

MCP และ OAuth (โมดูล 00 และ 06)

401 บนเอนด์พอยต์ MCP

  • อาการ - การเรียก https://mcp.clickhouse.cloud/mcp (หรือ /clickstack) คืน 401

  • สาเหตุ - เป็นเรื่องที่คาดไว้ก่อนคุณทำขั้นตอน browser OAuth ให้เสร็จ เอนด์พอยต์นี้ ต้องยืนยันตัวตน

  • วิธีแก้ - เพิ่มเซิร์ฟเวอร์เข้าไปใน agent ของคุณ แล้วรันขั้นตอน OAuth และอนุญาตใน เบราว์เซอร์ โดยใช้คำสั่งของเครื่องมือคุณ:

    • Claude Code - รัน /mcp เลือกเซิร์ฟเวอร์ และอนุญาต (หรือ claude mcp login <name>)
    • Codex CLI - codex mcp login <name>
    • Cursor - เปิดแผงตั้งค่า MCP และคลิกตัวควบคุม authorize/login ของเซิร์ฟเวอร์

    ยืนยันด้วยว่าสวิตช์ Connect with MCP เปิดอยู่สำหรับเซอร์วิสของคุณ

แล็ปท็อปขององค์กรบล็อก MCP หรือ OAuth

  • อาการ - agent ของคุณเพิ่มเซิร์ฟเวอร์ MCP ไม่ได้ หรือ OAuth redirect ถูกบล็อก
  • สาเหตุ - นโยบายของเครื่องที่องค์กรจัดการบล็อกการเพิ่มเซิร์ฟเวอร์ MCP หรือ OAuth ขาออก
  • วิธีแก้ - เครื่องส่วนตัวเป็นทางสำรองที่เร็วที่สุด

Windsurf เชื่อมต่อผ่าน HTTP แบบเนทีฟไม่ได้

  • อาการ - Windsurf เชื่อมต่อเอนด์พอยต์ MCP ล้มเหลว หรือ OAuth ของมันไม่เสถียร
  • สาเหตุ - Windsurf เชื่อมต่อผ่าน mcp-remote แทน streamable HTTP แบบเนทีฟ
  • วิธีแก้ - ใช้รูปแบบคำสั่งของ mcp-remote: { "command": "npx", "args": ["-y", "mcp-remote", "https://mcp.clickhouse.cloud/mcp"] } (เปลี่ยน /mcp เป็น /clickstack เมื่อต่อสาย ClickStack MCP ในโมดูล 06)

ในหน้านี้

Windows และ WSL 2wsl --install ใช้ไม่ได้หรือพิมพ์แค่ helpคำสั่งขึ้นว่า "not recognized" ใน PowerShellrepository อยู่ใต้ /mnt/cUbuntu รันเป็น WSL 1docker ใช้ไม่ได้ภายใน UbuntuWSL หรือ Docker มีหน่วยความจำน้อยกว่า 6 GBสคริปต์รายงาน /usr/bin/env: 'bash\r': No such file or directoryOAuth ไม่เปิดเบราว์เซอร์ของ WindowsDockerคอนเทนเนอร์ค้างอยู่ที่ "Created" และไม่เริ่มทำงาน"port is already allocated" ตอน upคำเตือน "platform does not match"ClickHouse Cloudคำขอแรกหลัง idle ช้าหรือขึ้น 500 หนึ่งครั้งทำรหัสผ่านของเซอร์วิสหายทำรหัสผ่านของ managed Postgres หายเข้าถึง ClickHouse Cloud ไม่ได้ไคลเอนต์พิมพ์ Unknown settings: ... skippingCDC (โมดูล 03)การสร้าง ClickPipe บอกว่า table realtime_trips exists and is not emptyClickPipe ค้างอยู่ที่ "Provisioning"แถวไม่มาถึง ClickHousematerialized view ไม่มีแถวreplication slot หยุดนิ่งตัวแปรสภาพแวดล้อมการ export ในเชลล์ทับ .env.workshopคีย์ซ้ำใน .env.workshopแชท (โมดูล 08)POST /api/chat คืน 503 พร้อมคำใบ้เรื่องการติดตั้งสร้างคีย์ OpenAI ครั้งแรกไม่ได้MCP และ OAuth (โมดูล 00 และ 06)401 บนเอนด์พอยต์ MCPแล็ปท็อปขององค์กรบล็อก MCP หรือ OAuthWindsurf เชื่อมต่อผ่าน HTTP แบบเนทีฟไม่ได้

Track your progress?

Optional. We email a link to confirm your address; progress records once you open it.

Please use your work email address, not a personal one.

Progress tracking also requires accepting the current Terms of Service in Privacy settings.

TH