RSS

บันทึกเรื่องต่างๆ ตอนย้ายระบบจาก Windows มาเป็น Linux

24 Feb

หลังจากใช้ Linux เป็น OS หลักมาพักใหญ่ และย้าย Development Environment มาอยู่บน Linux ก็พบปัญหาเรื่องความไม่เข้ากันของระบบไฟล์นิดหน่อย เลยมาบันทึกไว้เผื่อจะต้องใช้อีกในอนาคต

เรื่องแรกเลยคือย้าย source code ของ project มา ต้องการลบ directory ของ SVN ออก แต่ใช้ Nautilus แล้ว search directory .svn ไม่เจอทั้งๆ ที่เลือกแสดง Hidden ก็เห็น เลยต้องใช้ command line เอา

$ find -name "\.svn" -exec rm -rf {} \;

ต่อมาเป็นเรื่องของ MySQL การ backup & restore database มีปัญหานิดหน่อย คือไฟล์ backup database ของ project ที่ได้มาเค้า export มาจาก tools ชื่อ Navicat บน Windows เมื่อเอา import เข้า MySQL บน Linux แล้วไฟล์เกิด error เอาเข้าได้ไม่ครบ ที่เอาเข้าได้ก็มีปัญหาเรื่อง encoding
แต่ลอง import เข้า MySQL บน Windows แล้วไม่มีปัญหา คิดว่าคงเป็นเรื่อง encoding ของไฟล์ เลยลอง export ออกมาใหม่ แล้วเอาไป import เข้าใน MySQL ใน Linux พบว่าใช้ได้แฮะ แถมขนาดไฟล์เล็กกว่าที่ใช้ Navicat เยอะเลย

คำสั่ง export/import ใช้ดังนี้

# export mysql data to sql script
$ mysqldump -u root -p dbname > script.sql

# import mysql data from script
$ mysql -u root -p dbname < script.sql

เรื่องถัดมาก็เป็นของ MySQL มีปัญหาเกี่ยวกับการตั้งชื่อไฟล์ของตาราง คือ MySQL จะใช้ชื่อของตารางเป็นชื่อไฟล์ตอนเก็บด้วย (ชื่อ database จะใช้ตั้งชื่อ directory) แต่ว่า MySQL ของแต่ละ OS มี default config เรื่องนี้ต่างกันใน เช่น Linux นั้นการตั้งชื่อไฟล์จะเป็น case sensitive แต่บน Windows เป็น case insensitive ทำให้การเปรียบเทียบชื่อของตารางใน SQL นั้นใน Linux ไม่สามารถใช้ชื่อที่ case ต่างกันได้ แต่ Windows ใช้ได้
เช่น ชื่อตารางเป็น table_name ควรจะอ้างอิงได้ทั้ง table_name, TABLE_NAME, Table_Name, etc.

SELECT column FROM TABLE_NAME

เลยต้องปรับ config ของ MySQL ใน Linux นิดหน่อยให้สามารถใช้ได้ โดย
เปิดไฟล์ /ect/mysql/my.cnf ด้วยสิทธิ์ root แล้วทำการเพิ่ม config ใน section ของ mysqld ดังตัวอย่าง

[mysqld]
...
lower_case_table_names=1

รายละเอียดเพิ่มเติมดูที่ Identifier Case Sensitivity

จบแล้ว 🙂

Advertisements
 
Leave a comment

Posted by on Fri February 24, 2012 in Technical

 

Tags: , ,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: