Posts Tagged ‘MySQL’

9 ขั้นตอนในการ Install Apache, PHP, MySQL บน Mac OS X 10.6 (Show Leopard)

Saturday, August 28th, 2010

ต้องยอมรับว่าผมไม่เคยใช้ Mac พัฒนาเว็บเลย ส่วนใหญ่จะเป็น iPhone เสียมากกว่า

แต่ไหนๆหลังๆก็ใช้ชีวิตอยู่กับ Mac มากขึ้น เลยลองพัฒนาเว็บบน Mac บ้างดีกว่่า ขั้นตอนก็คล้ายๆกับ Linux เพราะ Mac OS นั้นเป็น Unix นั่นเอง

1. Start Apache

sudo apachectl start

2. Test Apache

http://localhost

3. Enable PHP

แก้ไฟล์ /etc/apache2/httpd.conf (แก้ด้วย VI ก็ได้) ให้ uncomment php module ดังข้างล่าง

LoadModule php5_module        libexec/apache2/libphp5.so

4. Restart Apache

sudo apachectl restart

5. Test PHP

เพิ่มไฟล์ phpinfo.php ใน /Users/YOUR_USERNAME/Sites/ ใส่ code ดังนี้

<?
phpinfo();

จากนั้นเปิด

http://localhost/~YOUR_USERNAME/phpinfo.php

6. Download MySQL

ให้เลือก DMG Package ที่นี่

http://dev.mysql.com/downloads/mysql/

ลงตามลำดับตามนี้

  • MySQL
  • Startup item
  • Preference pane

7. Start MySQL

เปิด System Preference -> MySQL

8. Create MySQL Password

โดย default root จะไม่มี password ให้เราสร้างดังนี้

cd /usr/local/mysql/bin
mysqladmin -u root password YOURPASSWORD

9. Config PHP & MySQL

cd /etc
sudo cp php.ini.default php.ini
sudo chmod 666 php.ini

แก้ไข path ใน php.ini ให้ตรงกับ path ของ MySQL (/var/mysql/mysql.sock เป็น /tmp/mysql.sock)

pdo_mysql.default_socket=/tmp/mysql.sock
mysql.default_socket = /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock

ขอให้สนุกกับการพัฒนาเว็บครับ :)

บันทึกการย้าย Web Hosting ครั้งยิ่งใหญ่ที่สุดในชีวิต

Tuesday, January 5th, 2010

สองสามวันมานี้อดหลับอดนอนเพราะเรื่องการย้าย Web Hosting นี่แหละครับ ขอจดไว้หน่อยว่าทำอะไรไปบ้าง (ผม admin มือสมัครเล่นครับ)

- ถ้าเว็บมี maintenance mode จงเปิดมันก่อนเลย

- เปลี่ยน NAME SERVER ทันที เพราะบางที DNS มันก็อัพเดทกันช้าเหลือเกิน

- การ load dump ของ MySQL นั้น ถ้าไม่ใหญ่มากก็ใช้ phpMyAdmin ได้ แต่ถ้าใหญ่มากๆควรใข้ BigDump แทน หรือถ้าจะเอาเป็นเรื่องเป็นราวเลยก็ต้อง MySQLDumper

- เรื่องภาษาไทย ที่ไม่ว่า Programmer/Developer รุ่นไหนๆก็ต้องเจอ ฮา…
ถ้า default charset ของ mysql (ซึ่งส่วนมากจะเป็น utf8) ไม่ได้เป็นตัวเดียวกับที่เราใช้ก็ต้องเพิ่ม code นี้

mysql_query(“SET NAMES tis620″, $connect);

- การ load dump file ที่เป็น tis620 หรือ utf8 ผ่าน BigDump อย่าลืมกำหนด charset ด้วยที่ config ชื่อ $db_connection_charset

- dump file ถ้าเป็น tis620 ตรวจดูให้แน่ใจว่า file save เป็น ANSI แล้ว (ปกติจะเป็น utf8) ไม่งั้น BigDump มันจะอ่านไม่ออก

- ถ้าเป็นไปได้ให้แก้ code ที่เป็น full path แล้วแทนที่ด้วย relative path แทน

- File/Folder Permission ลอกของเก่ามาเลย ใช้ ls -rl ช่วย แล้วดูเฉพาะตัวที่พิเศษๆเช่น 777

- ถ้าย้ายหลายเว็บจงอดทนทำทีละเว็บ ไม่งั้นอาจสับสนได้…

Oracle and her Sun

Tuesday, April 21st, 2009

ถือเป็นข่าวใหญ่ในวงการ Computer เลยทีเดียวเมื่อ Oracle กำลังบรรลุสัญญาในการซื้อ Sun (จากข่าวที่หน้าเว็บของทั้งสองคิดว่าจะเสร็จได้ภายใน Summer นี้)

ตอนได้ข่าวนี้ครั้งแรก รู้สึกแปลกใจเล็กน้อย ว่า IBM ปล่อยให้ Sun หลุดมือไปได้ยังไง เพราะจะเห็นว่าในสงคราม Java นั้น IBM ดูเหมือนกำลังจะก้าวขึ้นมาเป็นผู้นำแบบเต็มตัว จากความนิยมของ IDE อย่าง Eclipse หรือ Commercial Version อย่าง WSAD, RAD หรือ App Server อย่าง Web Sphere ที่แม้จะอ้วนมากๆ แต่ก็ได้รับการตอบรับที่ดีในภาคธุรกิจ สิ่งที่ขาดไปก็คือ Database ที่ DB2 ดูจะได้รับความนิยมลดลงเรื่อย ซึ่งถ้าได้ MySQL มา คงมาเติมตรงนี้ได้ (หลายคนอาจเถียงว่าในอดีต IBM ซื้อ Informix ไปดอง)

การที่ Oracle ใกล้ปิดดีลนี้ได้ (คิดว่าไม่น่าจะพลาด) คงทำเอาหลายๆคนที่ใช้ Java ในฝั่งของ IBM ฝันสลาย รวมถึงผมด้วย และในทางตรงกันข้ามสำหรับคนที่ทำงานใกล้ชิดกับ Oracle อยู่แล้ว คงเป็นข่าวที่ดีมากๆ

หลังจากการควบรวมครั้งนี้เสร็จสิ้นคงเห็นการเปลี่ยนแปลงในสงคราม Java จากที่เคยทำนายกันว่าจะเป็น Oracle+BEA VS IBM+Sun กลายเป็น 3 ทหารเสือ (Oracle+BEA+Sun) รุม IBM เจ้าเดียวเลย น่าหนักใจแทน IBM จริงๆครับ

มองอีกมุมว่าการที่ Oracle มี Product คล้ายๆกันมากเกินไปอาจะทำให้คนที่ตัดสินใจใช้ IBM รู้สึกปลอดภัยที่โอกาสเกิดการเปลี่ยนแปลง Technology มีน้อยกว่า ยกตัวอย่าง IDE นั้น Oracle กำลังจะมีถึง 3 ตัวคือ JDev, Workshop และ NetBeans ในขณะที่ IBM มีเพียง Eclipse (RAD) เท่านั้น

นอกจากนี้ งานนี้อาจทำให้ Sun Java Certificate กลายเป็นของเก่าหายากอีกด้วย เพราะอาจถูกเปลี่ยนชื่อเป็น OCJP, OCWCD, OCEA

มามองกันที่ฝั่ง Database กันบ้าง หลายๆท่านคงกังวลเหมือนผมว่า Oracle จะทำยังไงกับ MySQL เพราะจริงๆแล้ว Oracle เคยพยายามซื้อ MySQL มาแล้ว แต่สุดท้ายเป็น Sun ที่ได้ไป

สิ่งที่ MySQL User กลัวกันก่อนหน้านี้ว่าถ้า IBM ได้ MySQL ไป จะเอาไปดองแบบ Informix กลับยิ่งกลัวหนักขึ้น เพราะ MySQL Enterprise Version กับ Oracle Database นั้นค่อนข้างจะชนกันตรงๆ ส่วน MySQL Community Version อาจจะโดนลดบทบาทลง (แต่ไม่ตาย) แล้วดัน Oracle XE ที่เป็น Free Version ให้ได้รับความนิยมมากขึ้น แต่เรื่อง Open Source คงจะไม่เกิดขึ้นง่ายๆแน่ๆ

คงต้องดูกันต่อไปครับว่า เทพ Oracle จะทำยังไงกับ her Sun บ้าง

Fore more information:

http://www.sun.com/third-party/global/oracle/index.jsp

http://www.oracle.com/sun/index.html

http://www.theserverside.com/news/thread.tss?thread_id=54328

http://blognone.com/node/11386

WWW SQL Designer

Friday, November 14th, 2008

ลองนั่งๆอัพเดทดูว่ามี Tool อะไรใหม่ๆของ MySQL ได้รับความนิยมบ้างก็ไปเจอเจ้า WWW SQL Designer

เข้าใจว่าพัฒนามาหลายปีแล้ว เท่าที่ลองใช้ๆดู ใช้ง่ายกว่า Designer ของ phpMyAdmin อีกแฮะ

ฟังก์ชั่นคงไม่เจ๋งเท่า MySQL Workbench แต่รายนั้นเขารันบน Windows Desktop

WWW SQL Designer สามารถสร้างออกแบบบนเว็บแล้ว generate SQL สำหรับ MySQL ได้เลย แต่น่าจะ import SQL ได้ด้วยนะ (ตอนนี้ import จาก XML กับ Database ได้)

ยังไงก็ลองเอาไปใช้กันดูครับ หรือลองไปดู Project อื่นๆของคุณ Ondřej Žára เจ๋งๆเพียบ

MySQL: Packet for query is too large

Friday, October 19th, 2007

เมื่อวานเจอปัญหานี้ เลยถือโอกาสนำมาแชร์ที่นี่ด้วย

สำหรับใครที่ใช้ 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)

(more…)

Import CSV to MySQL

Tuesday, September 11th, 2007

ทำได้ง่ายด้วยการใช้คำสั่ง “LOAD DATA INFILE” ดังตัวอย่างข้างล่างนี้ครับ

LOAD DATA INFILE ‘data.csv’ INTO TABLE table2
FIELDS TERMINATED BY ‘,’;

สำหรับวิธีการใช้ LOAD DATA INFILE ขั้นสูง สามารถอ่านได้ที่เว็บของ MySQL ครับ

MySQL Workbench

Thursday, June 21st, 2007

mysql_workbench_about_1.png

MySQL Workbench หนึ่งใน GUI Tools จาก MySQL โดยตรง
ผมเคยลองเล่นกับมันมาบ้างก่อนหน้านี้ แต่เพิ่งได้มีโอกาสใช้แบบจริงจังเมื่อเร็วๆนี้ครับ
ถึงแม้ตอนนี้ยังเป็น Beta Version อยู่ โดยปุ่มบางปุ่มยังกดไม่ได้ก็ตาม ^^”
แต่โดยภาพรวมแล้ว ผมค่อนข้างประทับใจกับ Free Tool ตัวนี้ของ MySQL พอสมควร
โดยผมใช้ MySQL Workbench ในการ Reverse Engineering จาก MySQL Database มาเป็น Data Model โดยตรง เพื่อใช้ในการทำเอกสารต่อไปครับ

mysql_workbench_model_large.png

For more information: MySQL Workbench Overview

Subquery on MySQL5

Thursday, February 1st, 2007

มีเรื่องต้องใช้งาน MySQL5 และต้อง mock ข้อมูลขึ้นมาเยอะๆ ก็เลยลองไปดูว่า MySQL เขียน Sub Query ได้มั้ย จะได้ดึง select ข้อมูลแล้ว insert กลับเข้าไปหลายๆ row

INSERT INTO hotel SELECT * FROM hotel h where hid=1

For more information: MySQL5 Subquery Syntax