การแก้ปัญหา
แหล่งอ้างอิงอาการ สาเหตุ และวิธีแก้ของทุกความล้มเหลวที่พบขณะสร้างและทดสอบเวิร์กช็อปนี้ จัดกลุ่มตามจุดที่มันปรากฏ
ทุกรายการด้านล่างเป็นความล้มเหลวที่เกิดขึ้นจริงขณะสร้างและทดสอบเวิร์กช็อป นี้ หาอาการของคุณ อ่านสาเหตุ แล้วลงมือแก้ ถ้าไม่มีอะไรตรงกันเลย ให้ส่ง ปัญหาให้ 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 เปิดอยู่สำหรับเซอร์วิสของคุณ
- Claude Code - รัน
แล็ปท็อปขององค์กรบล็อก 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)