Score:0

สตริงการสืบค้น Mysql ยาวเกินไป

ธง za

ฉันพบพฤติกรรม mysql แปลกๆ ที่เกิดขึ้นระหว่างเครื่องเสมือนสองเครื่อง

เมื่อฉันมีสตริงข้อความค้นหาที่ยาวกว่า 1,457 ตัวอักษร การเชื่อมต่อที่ฉันใช้แฮงค์
ฉันคิดว่าปัญหาคือข้อความค้นหาที่มีผลลัพธ์มากมาย แต่แล้วก็พบว่า สตริงข้อความค้นหาไม่สำคัญ

ตัวอย่างเช่น:

select * from users where uname = "abcdeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffpooooooooooppppppppfooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooffffffseroieeeeuuwwwwwwwwwwwuii";

แฮงค์เซิร์ฟเวอร์

ถ้าฉันลบอักขระตัวเดียวออกจากสตริงนั้น mysql จะส่งคืนชุดระเบียนเปล่าตามที่คาดไว้ ไม่มีผู้ใช้ดังกล่าวและฟิลด์ unname คือ varchar(64) ตารางมีเพียงหนึ่งบันทึก

ฉันพยายามตรวจสอบซ็อกเก็ตและพบว่ามีการส่งสตริงการสืบค้นซ้ำ 20 ครั้ง จากนั้นทราฟฟิกจะหยุดลง แต่ไคลเอนต์ไม่ออกและการเชื่อมต่อไม่หลุด/closed.cd

192.168.0.111:43012 -> 192.168.0.112:mysql
    ...
    bytes_sent:22614
    bytes_retrans:20260
    bytes_acked:329
    bytes_received:8208
    segs_out:28
    segs_in:10
    data_segs_out:18
    data_segs_in:8
    ...

ข้อความค้นหาเดียวกันที่สร้างจากอินสแตนซ์อื่นไปยังเซิร์ฟเวอร์เดียวกันนั้นทำงานได้อย่างไร้ที่ติ ฉันลองใช้ไคลเอ็นต์เทอร์มินัล mysql อย่างเป็นทางการ ไคลเอ็นต์เทอร์มินัลทางเลือกและสคริปต์ แต่ได้ผลลัพธ์เดียวกัน

ua flag
ส่งรายงานข้อผิดพลาดพร้อมตัวอย่างที่ชัดเจนที่ bugs.mysql.com
us flag
นี่อาจเป็นปัญหากับการตั้งค่า MTU บนอินเทอร์เฟซเครือข่ายบนโฮสต์ อาจเป็นไปได้ว่าข้อความค้นหาสิ้นสุดในส่วน TCP ที่ยาวเกินไป ซึ่งเคอร์เนลจะทิ้งไป
Eineki avatar
za flag
ขอบคุณสำหรับคำแนะนำ @RickJames เป็นเรื่องยากที่จะยื่นรายงานข้อบกพร่อง ปัญหาจำกัดอยู่ที่ vm เซิร์ฟเวอร์เดียวเมื่อโต้ตอบกับไคลเอนต์ vm เฉพาะ ฉันทำซ้ำสอง vms และปัญหาหายไป ฉันรีบูท vms ดั้งเดิมสองตัวและปัญหายังคงมีอยู่ ถ้าเปลี่ยนแค่เครื่องใดเครื่องหนึ่งในสองเครื่อง ปัญหาจะไม่เกิด
ua flag
@Eineki - ขอบคุณที่พยายาม "ไคลเอนต์" - ไคลเอนต์บรรทัดคำสั่ง mysql? หรืออย่างอื่น?
Eineki avatar
za flag
ใช่ ไคลเอนต์บรรทัดคำสั่ง @RickJames mysql, mycli, ไคลเอนต์บรรทัดคำสั่งทางเลือกที่เขียนด้วย python และสคริปต์ php ที่ง่ายมาก (เชื่อมต่อ, ส่งแบบสอบถาม, ดึงชุดบันทึกที่ว่างเปล่าและปิดการเชื่อมต่อ) ที่เขียนโดยตั้งใจ ผลลัพธ์เดียวกัน ฉันเริ่มคิดถึง mtu ตามที่ #TeroKilkanen ชี้ให้เห็น (ความยาวของสตริงควรตั้งค่าให้กระดิ่งดัง)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา