line login ใน e-office ไม่สำเร็จ ติดปัญหาท่อนเรียก Callback
ผมทดสอบบน xampp สามารถ login line ได้ปกติ แต่พอเอาขึ้น cwp กลับเจอปัญหาค้างที่หน้า callback
จึงทำการเปิด debug mode พบ Error ดังนี้
"Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1364 Field 'code' doesn't have a default value in /home/eoffice/public_html/Kotchasan/Database/PdoMysqlDriver.php:125 Stack trace: #0 /home/eoffice/public_html/Kotchasan/Database/PdoMysqlDriver.php(125): PDOStatement->execute() #1 /home/eoffice/public_html/modules/index/models/register.php(243): Kotchasan\Database\PdoMysqlDriver->insert() #2 /home/eoffice/public_html/modules/index/models/linelogin.php(65): Index\Register\Model::execute() #3 /home/eoffice/public_html/modules/index/controllers/linecallback.php(58): Index\Linelogin\Model::chklogin() #4 /home/eoffice/public_html/Kotchasan/Router.php(70): Index\Linecallback\Controller->index() #5 /home/eoffice/public_html/Kotchasan/Kotchasan.php(76): Kotchasan\Router->init() #6 /home/eoffice/public_html/line/callback.php(18): Kotchasan->run() #7 {main} Next Exception: SQLSTATE[HY000]: General error: 1364 Field 'code' doesn't have a default value in /home/eoffice/public_html/Kotchasan/Database/PdoMysqlDriver.p in /home/eoffice/public_html/Kotchasan/Database/PdoMysqlDriver.php on line 130"
ไม่ทราบว่าต้องแก้ไขอย่างไรครับ
จึงทำการเปิด debug mode พบ Error ดังนี้
"Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1364 Field 'code' doesn't have a default value in /home/eoffice/public_html/Kotchasan/Database/PdoMysqlDriver.php:125 Stack trace: #0 /home/eoffice/public_html/Kotchasan/Database/PdoMysqlDriver.php(125): PDOStatement->execute() #1 /home/eoffice/public_html/modules/index/models/register.php(243): Kotchasan\Database\PdoMysqlDriver->insert() #2 /home/eoffice/public_html/modules/index/models/linelogin.php(65): Index\Register\Model::execute() #3 /home/eoffice/public_html/modules/index/controllers/linecallback.php(58): Index\Linelogin\Model::chklogin() #4 /home/eoffice/public_html/Kotchasan/Router.php(70): Index\Linecallback\Controller->index() #5 /home/eoffice/public_html/Kotchasan/Kotchasan.php(76): Kotchasan\Router->init() #6 /home/eoffice/public_html/line/callback.php(18): Kotchasan->run() #7 {main} Next Exception: SQLSTATE[HY000]: General error: 1364 Field 'code' doesn't have a default value in /home/eoffice/public_html/Kotchasan/Database/PdoMysqlDriver.p in /home/eoffice/public_html/Kotchasan/Database/PdoMysqlDriver.php on line 130"
ไม่ทราบว่าต้องแก้ไขอย่างไรครับ
1. ไปใส่ default value ให้คอลัมน์ที่เป็นปัญหา ถ้าตามที่แนบมาคือ คอลัมน์ code โค้ดครับ จะให้เป็น string ว่าง หรือ NULL ก็ได้
2. ปรับค่า SQL_MODE ของ Database ให้เป็นค่าว่าง วิธีหาเอาในเว็บนี้ละครับ หรือไม่ก็ Google เลย จริงๆมันมีอีกวิธีแต่ไม่แนะนำ คือสามารถตั้งค่านี้ได้ที่ load.php มีคำอธิบายเรื่องนี้อยู่ที่กระทู้ปักหมุดครับ
ไม่สามารถเพิ่มสมาชิกได้
อันนี้น่าจะเรื่องใหญ่หน่อย ปกติจะเจออาการนี้ถ้าใช้ MySQL8 เป็นฐานข้อมูลครับ เนื่องจาก MySQL8 มันไม่เพิ่ม AUTO_INCREMENT ให้อัตโนมัติ ผมแนะนำให้ใช้ MariaDB แทน เป็นการสัณณิษฐานเบื้องต้นนะครับ แนะนำให้ดูจาก Error ที่ได้รับก่อน เพราะมันมีความเป็นไปได้ว่าจะเกี่ยวข้องกับย่อหน้าแรกเหมือนกัน ลองแก้ไขตรงนั้นก่อน
1. ติดตั้งบน CWP PHP7.1.1 , MariaDB 10.2.40
2. ติดตั้งบน CWP PHP 7.4.29 , MariaDB 10.2.43
3. ติดตั้งบน iis + Mysql 8.0.35 + php 7.3.27
4. ติดตั้งบน iis + Mysql 5.7.44 + php 7.3.27
ทั้งหมดทดสอบโดยเป็นการติดตั้งใหม่ สร้างฐานข้อมูลใหม่
ปัญหาเหมือนกันคือไม่สามารถเพิ่มสมาชิกได้
- ทดสอบเพิ่มสมาชิกโดยตรงใน Database สามารถเพิ่มได้
- ตั้งค่า Default Filed 'Code' เป็น Null แล้ว
ตอนนี้ยังไม่สามารถเพิ่มสมาชิกได้ครับ
อีกอันคือ 2. ปรับค่า SQL_MODE ของ Database ให้เป็นค่าว่าง อันนี้ก็เจอบ่อยครับ
ทั้งหมดมีอธิบายอยู่ที่กระทู้ปักหมุดครับ ลองอ่านดูก่อนก็ได้ครับ
มากกว่านี้ คือให้ผมเข้าไปดูให้แล้วแหละ ซึ่งต้องส่งข้อมูล FTP และข้อมูลที่เกี่ยวข้อง "ทั้งหมด" มาให้ผมครับ
ต้องไปปรับ Filed 'Code' และ 'birthday' ให้เป็น Default = NULL
ขอบคุณครับ จริงๆผมก็เพิ่งอัปเดท 2 รายการนี้ไปวันสองวันนี้เหมือนกันครับ