เมื่อวานเจอปัญหานี้ เลยถือโอกาสนำมาแชร์ที่นี่ด้วย
สำหรับใครที่ใช้ MySQL โดยเฉพาะกับ Java อาจจะมีโอกาสได้เจอกับ Exception แบบด้านล่างนี้
com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1267737 > 1048576). You can change this value on the server by setting the max_allowed_packet’ variable.
at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2648)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1597)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1708)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3249)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3178)
at com.mysql.jdbc.Statement.execute(Statement.java:711)
สาเหตุของปัญหาก็คือในบางครั้งเรามีการส่ง Packet (ของคำสั่ง SQL) ที่มีขนาดใหญ่เกินกว่า Max Allowed Packet ของ MySQL ที่มีค่า default ที่ 1MB หรือ 1048576 Bytes โดยถ้าใครที่ใช้ Blob Field เพื่อเก็บข้อมูล Binary เช่นภาพลงในฐานข้อมูลแล้วล่ะก็ ถ้าเจอภาพใหญ่ๆเข้าไปโอกาสเกิน 1MB ก็สูงมากครับ
วิธีการแก้ไขก็ดังคำแนะนำใน Exception ด้านบน คือไปกำหนดค่าให้กับตัวแปร max_allowed_packet ในส่วนของ mysqld ใน config ไฟล์ของ MySQL
โดยถ้าเป็น Windows ก็จะเป็นไฟล์ my.ini ดังตัวอย่างข้างล่างนี้
[mysqld]
max_allowed_packet=16M
แต่ถ้าเป็น Unix ก็จะเป็นไฟล์ my.cnf โดยให้แก้ดังนี้
max_allowed_packet = 1M
เป็น
max_allowed_packet = 16M
โดย 16M เป็นค่าที่เราจะกำหนดใหม่ แต่ถ้ายังไม่พอก็สามารถปรับได้ถึง 1G
โดยทั้งหมดทดสอบบน MySQL 5.0 ครับ
Fore more information: MySQL AB :: MySQL 5.0 Reference Manual :: B.1.2.9 Packet too large
Related posts:


ช่วงนี้งานยุ่งเหรอครับ?
ยังติดตาม post ใหม่ ๆ อยู่ครับ
มันจะมีผลกระทบในเรื่อง performance หรือเรื่องอื่นๆหรือเปล่าครับ
ได้ลิ้งมาจาก นริสา ดอท คอมครับ
เลยแวะมาที่้บ้าน จะมาถามเรื่องจาวาซะหน่อยครับ
พี่คับ ผมต้องการจะอ่านไฟล์จาก log file ในจาวาจ้องทำไงครับ
คือความต้องการของผมคือจะทำการ gent หน้า php ให้เป็น html ครับ
คือถ้าืำทำแบบไฟล์เดียวอ่าได้แล้ว แต่ผมไม่ทราบวิธีการทำหลายๆไฟล์พร้อมกันมาว่าจะทำอย่างไร ตัวอย่า่งล็อกไฟล์เป็นแบบนี้ครับ
พี่ช่วยแนะนำด้วยนะครับ
โปรแกรมที่ผมเขียนได้โดยการแปลงไฟล์เดียวครับ
http://attapon.ptkclub.com/java/read-write-files-in-java.html
ปล. อยากติดต่อแลกลิ้งกับเง็บพี่ด้วนะครับ เพื่อสะดวกในการเข้ามาครั้งหน้านะครับ ขอบคุณนพครับ
Attapon’s Blog = http://attapon.ptkclub.com/