คลังเก็บบล็อก

sql-mode


ย้าย server จาก appserv มาเป็นตัวที่ config เองหลังจาก test พบว่า ใช้ ” กับฟีลย์ที่เป็น int ไม่ได้ search ในเว็บบอร์ดเจอว่าถ้าลง MySQL บน windows จะได้ค่าตั้งต้น sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION” ถ้าใช้ ” กับ int จะฟ้อง error ว่า #1366 – Incorrect integer value: ” ส่วน apperv ตรวจ NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION ส่วน xampp ไม่ตรวจสอบพวกนี้เลย ทำให้ไม่เจอปัญหาพวกนี้
แก้โดยเข้าไปแก้ mysql.ini ใน MySQL/bin/my.ini
ดูรายละเอียดได้ที่ http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html รายละเอียดยังเปรียบเทียบกับ database อื่นๆ ด้วย เช่น
เทียบกับ db2 sql-mode=” PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS”
เทียบกับ MSSQL db2 sql-mode=” PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS”
ถ้าต้องเขียนระบบข้าม database ถ้า config ข้อมูลพวกนี้ให้ตรงกันได้ น่าจะลดปัญหาลงได้มาก

db2:odbc


code เดิมติดต่อ database ผ่าน odbc (ถ้าเขียนใหม่ แนะนำให้ใช้ pdo จะดีกว่าครับ มี .dll อยู่ใน folder ที่ download มา) ดังนั้นจำเป็นต้องลง เวอร์ชั่นให้ตรงกับ windows ถ้าเราใช้ windows 64 bit ก็ต้องใช้ ก็ต้องใช้ version 64 เท่านั้น bit version 32 bit ลงได้แต่จะไม่มี odbc driver ใน ODBC Data Source Administrator
ถ้า db2 อยู่คนละเครื่องอาจจะลง db2 connect เพื่อที่จะลง driver เพิ่ม จะเจอใน fix tool ครับ
เราจะสามารถกำหนด datasource ได้ 3 แบบครับ

  1. user dsn จะสามารถใช้ได้เฉพาะผู้สร้างเท่านั้น
  2. systems dsn ผู้อื่นสามารถเรียกใช้ได้
  3. file dsn คือการเก็บ config ไว้ในรูปแบบไฟล์

แต่เพราะเครื่องผมเป็น windows 64 bit จะพบกับ error

SQLSTATE Error Description
IM014 The specified DSN contains an architecture mismatch between the Driver and Application (DM) 32-bit application uses a DSN connecting to a 64-bit driver; or vice versa.

ตอนนี้ยังไม่มี php 64 bit สำหรับ windows อย่างเป็นทางการครับ สรุปคือตันครับ คงต้องหาวิธีอื่น

%d bloggers like this: