Nov 27, 2008

Out of range value adjusted for column error!

หัวข้อนี้เกี่ยวข้องกับการแก้ปัญหากรณีที่ เราไปกำหนดให้ mySQL

ตรวจสอบชนิดข้อมูล รวมถึงขนาดข้อมูล ที่เปิดไว้ในตารางของฐานข้อมูล

ถ้าหาก ชนิดที่กรอก หรือกำหนดข้อมูลเกินที่ได้กำหนดไว้

mySQL ก็จะแจ้งเราให้รู้ดังข้อความประมาณนี้ (บรรทัดล่าง)

"Out of range value adjusted..."


มันเป็นเรื่องถูกต้องแล้วล่ะที่ mySQL ไม่ยอมให้เรา Insert Data

เพราะข้อมูลที่ถูกนำเข้่าไป อาจจะขาดหาย หรือไม่สมบูรณ์

ซึ่งน่าจะส่งผลเสียในภายหลังได้

แต่ทั้งนี้บางคนอยากจะเปิดให้ยอมให้กรอกข้อมูลเข้าไปได้

เราก็มีวิธีมาแนะนำ ดังนี้

เข้าไปแก้ไฟล์ my.ini ของ mySQL

โดยไปปิดคำสั่งเอาไว้ ลองเทียบดูกับคำสั่งด้านล่างนะครับ

--------------------------------
# Set the SQL mode to strict
#sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
--------------------------------

เมื่อ restart service mySQL ก็จะสามารถนำข้อมูลเ้จ้าปัญหาดังกล่าว เข้าสู่ตารางข้อมูลได้แล้ว ครับ ^ ^

ข้อมูลที่เกี่ยวข้อง ::
Link1

กำหนดให้ mySQL อ่านภาษาไทยได้

หลายๆ คนที่เริ่มทำงานไปสักพัก ก็ต้องมีบ้างที่รู้สึกว่า

บางส่วนในงานเริ่มทำงานไม่ได้ดั่งใจ

สำหรับชาวไอที หรือบรรดาผู้พัฒนาโปรแกรมมือใหม่

ที่จำเป็นต้องติดต่อฐานข้อมูล เช่น PHP+mySQL หรือ JSP+mySQL

มักจะเริ่มต้นพัฒนาด้วยการติดตั้ง Appserv ซึ่งเป็นตัวที่รวมเครื่องมือ

ให้สามารถลงได้สะดวก คือลงเสร็จ ก็สามารถพัฒนาเว็บไซต์

ภาษา PHP กับ mySQL ได้ทันที โดยไม่จำเป็นต้องมีความรู้อะไรมากนัก



จริงอยู่ ที่ว่า Appserv มีประโยชน์ที่ทำให้เราสามารถเริ่มพัฒนางานได้เร็วขึ้น

แต่ถ้าหากได้ทำงานในองค์กร แล้วล่ะก็ทางเลือกที่จะใช้ Appserv นั้นดูจะไม่เหมาะนัก

ผู้เขียนเองแม้ยังเป็นเพียงผู้พัฒนาวัยละอ่อน แต่คาดว่า นี่อาจเป็นทางเลือกที่ดีกว่า ^ ^


อย่ากลัว! ที่จะเปลี่ยนแปลง

ความรู้ที่ใหม่ๆ บางครั้ง มันก็ได้มาพร้อมกับปัญหาที่ใหม่ๆ เหมือนกัน

เอาล่ะปัญหา แรกที่เราน่าจะพบกัน

คือปัญหาการแสดงผลภาษาไทยของ mySQL

สิ่งที่สังเกตได้ว่าเราเข้าข่ายที่ต้องแก้ไข mySQL ให้ภาษาไทยกลับมาอ่านออกเขียนได้กัน

อันดับแีรก เข้าไปหาไฟล์ ชื่อ my.ini หรือ my.cnf (Linux)

จากนั้น นำบรรทัดข้างล่าง ไปเทียบแล้ว เพิ่มเข้าไป

mySQL ของเรา เมื่อ restart service ก็จะสามารถอ่านภาษาไทยได้แล้ว ^ ^

---------------------------------------------
[mysqld]
skip-character-set-client-handshake
default-character-set=tis620
init_connect='SET collation_connection = tis620_thai_ci'
init_connect='SET NAMES tis620'
---------------------------------------------

หวังว่าคงจะทำได้กันนะครับ

Oct 15, 2008

SQL Command ค้นหาทุกตารางที่มีคอลัมภ์ ที่เราต้องการ #2

จากบทความเก่าที่เคยได้เขียนไว้ รู้สึกว่าจะยังไม่ครอบคลุมนัก

จึงเขียนบทความเพื่อเพิ่มเติมรายละเอียดเข้ามาอีกนิดหน่อย

ของเก่าดูได้ที่

"SQL Command ค้นหาทุกตารางที่มีคอลัมภ์ ที่เราต้องการ"

จากของเดิมนั้น คำสั่งจะถูกนำไปค้นยังทุกๆ คอลัมภ์ที่มีในระบบ

ซึ่งถ้าหากต้องการค้นเจาะจงตารางข้อมูลก็ให้ใช้คำสั่งลักษณะนี้

-------------------------------------------------------------------------
select table_schema,table_name from
information_schema.columns where
column_name = 'FundID' and table_schema = 'dbFund';
-------------------------------------------------------------------------

อ่านเพิ่มเติมได้ที่

http://www.revealnet.com/newsletter-v6/0905_A.htm

Oct 6, 2008

Problem ASP include dynamic URL (#2)

ช่วงหลังมีคนหลังเกี่ยวกับ ASP Classic เข้ามาขอนำมาตอบที่นี่ล่ะกันนะครับ

Problem ASP include dynamic URL คืองานเขียน ครั้งก่อนที่ผมได้เคยเขียนไว้นะครับ (นานมากล่ะ)

ตัดบางส่วนของจดหมายมาดังนี้
-------------------------------------
ผมไม่เข้าใจโค๊ดพวกนี้เลยครับ ซึ่ง php มันทำง่ายมากเลย แค่ include($valFile) ก็จบแล้วน่ะครับ เช่นที่ผมเคยเขียนใน asp น่ะครับ

   1:  if(!$_SESSION["s_user"] and $page!="index_home.php"){
   2:     echo"<script language='Javascript'>
   3:              alert('! ส่วนนี้ถูกปิดใช้งาน กรุณา Login ก่อนเข้าใช้งาน !')
   4:          </script>";
   5:     include("index_home.php");
   6:  }
   7:  else{ 
   8:     include($page); 
   9:  }     


มันก็เป็นหลักการที่ง่ายๆ ไม่ได้ติดคอมเม้นในภาษา html
-------------------------------------


ตามที่เขียนมานั้น เข้าใจดีครับว่า ติดปัญหาอะไร และถามคำถามได้ดีแล้วครับ
เข้าใจว่าต้องการ ให้เขียน แบบเหมือนที่ยกตัวอย่างของ PHP มาให้ดู ลองเทียบกันดูนะครับ

   1:  
   2:  dim filename
   3:  filename = "index_home.php"
   4:  
   5:  If Session("s_user") <> "" && filename <> "index_home.asp" Then
   6:  
   7:     response.write "<sc ript="" language="Javascript">
   8:        alert('! ส่วนนี้ถูกปิดใช้งาน กรุณา Login ก่อนเข้าใช้งาน !')"
   9:     <!--#include file="index_home.asp" -->
  10:  
  11:  Else
  12:  
  13:     dim strFile, fso, fsoFile
  14:     strFile = "upload/"& CStr(filename)
  15:  
  16:     If strFile <> "" Then
  17:  
  18:     set fso = createObject("Scripting.FileSystemObject")
  19:     set fsoFile = fso.openTextFile(Server.MapPath(strFile))
  20:     response.write "" & fsoFile.readAll &amp; ""
  21:     set fso = nothing
  22:     set fsoFile = nothing
  23:  
  24:     End if
  25:  
  26:  End if


เท่าที่เขียน ไปนี่ ยังไม่ค่อยจะมั่นใจ นะครับว่า ถูกหลักการไหม เพราะว่า ทิ้ง ASP Classic (VBscript) มาซักระยะแล้วครับ

Sep 3, 2008

SQL Command ค้นหาทุกตารางที่มีคอลัมภ์ ที่เราต้องการ

กรณีที่เรามีตารางในฐานข้อมูลจำนวนมาก
จะเป็นเืรื่องวุ่นวายแน่ๆ ถ้าหากมีการแก้ไขโครงสร้าง คอลัมภ์
ในตารางหลักที่เกี่ยวพันธ์ กับหลายๆ ตารางภายในฐานข้อมูล
จะให้ไปค้นดูโครงสร้างทีละ ตารางเลยก็คงไม่ใช่เรื่องดี
ุุ้้ถ้าติดปัญหานี้อยู่ ลองเอาโค๊ดข้างล่างไป query ดูนะครับ

-----------------------------------------------
select table_name from
information_schema.columns where
column_name = 'CustomerId'
-----------------------------------------------

ปล. CustomerId คือ คอลัมภ์ที่ต้องการค้นหาจากฐานข้อมูล
ดูเพิ่มเติมได้ที่
http://blog.sqlauthority.com/2008/08/05/sql-server-2005-get-field-name-and-type-of-database-table/

Blog Comment

บทความที่ได้รับความนิยม