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

แก้ปัญหา MySql ไม่ทำงาน


การที่มี appserv หรือ xampp เพื่อให้การลงโปรแกรมตระกูล LAMP (Linux Apache MySQL PHP) ง่ายขึ้นมาก แต่บางครั้งลงไปแล้ว แล้วเข้า phpmyadmin ไม่ได้ โดยเจ้งว่ามี error #2003 - Can't connect to MySQL server on 'localhost' (10061) เมื่อเข้าไปดู mysql service ปรากฏว่าไม่ได้สตาร์ ขึ้นมาพร้อมวินโดวส์ เข้าไปที่ run พิมพ์ services.msc ไปที่ MySQL พยามสตาร์ขึ้นมาจะมีเออเรอร์ Windows could not start the Mysql service on local Computer. Eror 1067: The process terminated unexpectedly.

สาเหตุหนึ่งก็คือ การคอนฟิกส์ให้เรียกใช้ MySQL ในโฟลเดอร์ที่ผู้ใช้ในขณะนั้นไม่มีสิทธิ หรือการคอนฟิกส์ผิดพลาดโดยไม่ได้ระบุตำแหน่งของ MySQL หรือตำแหน่งที่เก็บข้อมูลไว้อย่างถูกต้องครับ

ไปที่ MySQL service สังเกต Path to executable “D:\xampp\mysql\bin\mysqld.exe” –defaults-file=”D:\xampp\mysql\bin\my.ini” MySQL ตำแหน่งแรกคือ ตำแหน่งโปรแกรม MySQL ดูให้แน่ใจว่ามีอยู่จริง และสมารถ access เข้าไปได้ ส่วนที่สองคือ ตำแหน่งคอนฟิกส์ เข้าไปหาบรรทัด basedir และ datadir

basedir = "xampp/mysql/"
datadir = "xampp/mysql/data/"

จากกรณีนี้จะเห็นว่าไม่ได้ระบุตำแหน่งที่ถูกต้อง แก้เป็น

basedir = "D:/xampp/mysql/"
datadir = "D:/xampp/mysql/data/"

สตาร์ทเซอร์วิสก็ทำงานแล้วครับ แต่ถ้ายังไม่ได้อีกดูว่าใน datadir ของเรามีโฟลเดอร์ mysql และมีไฟล์อยู่ข้างในรึเปล่า ถ้าไม่มี mysql จะไม่ทำงานให้ copy มาจากเครื่องทีใช้งานได้ สตาร์ทเซอร์วิสใหม่ (เสร็จแล้วต้องดูสิทธิต่างๆ ด้วยเพราะส่วนนี้จะเป็นฐานข้อมูลที่ระบุสิทธิต่างๆ ของฐานข้อมูลใน mysql)

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

การ config visual Directory ใน apache


หลังจากลง appserv หรือ xampp เราก็จะสามารถเข้าไปเพื่อเขียนงานได้ทันที ในบางครั้งการทำเว็บก็มีความต้องการให้บางส่วนของเว็บทำงานเป็นพิเศษต่างจากปกติที่โปรแกรมจัดไว้ให้ เช่น เว็บมีขนาดใหญ่มากไม่เหมาะที่จะเก็บไว้ในไดร์ฟเดียวกับเว็บอื่นๆ ไม่ต้องการที่จะที่จะเก็บไว้ในไดร์ฟซี หรือต้องวางไว้โดยใช้ port พิเศษเพื่อความปลอดภัย
ใช้ editplus เปิด Config จะอยู่ที่ apache\conf\httpd.conf ใช้ เนื่องจากต้องการจะแยก config ทีเพิ่มมาใหม่ไว้อีกที่เพื่อความเป็นระเบียบและบริหารง่าย จะใช้วิธี include ให้ไปอ่านจากอีกไฟล์หนึ่ง เพิ่มบรรทัด
Include “conf/extra/httpd-plus.conf” หลัง include คือ ชื่อไฟล์และพาร์ทที่จะเก็บ config ตัวใหม่
ถ้าต้องการ map directory ใหม่ใช้

Alias /www2 "d:/www2/"
<Directory "d:/www2">
AllowOverride All
Order allow,deny
Allow from all
</Directory>

อธิบายคือ map directory d:/www2 โดยจะสามารถเรียกโดย url http://localhost/www2/
ถ้าต้องการกำหนด port หรือค่าอื่นๆด้วย

Listen 8080
Alias /www2 " d:/www2/"
<Directory "d:/www2/">
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<VirtualHost *:8080>
ServerAdmin plus@hotmail.com
DocumentRoot "d:/www2"
ServerName Plus.localhost
ServerAlias dev.localhost
ErrorLog "logs/Plus.localhost-error.log"
CustomLog "logs/Plus.localhost-access.log" combined
</VirtualHost>

จะต่างกันที่เรียกโดย url http://localhost:8080 คือต้องระบุ port ด้วยและ config บางส่วนจะต่างกัน
เช่น การกำหนดอีเมล์ผู้ดูแล domain
อ่าน ทำ dns (Domain Name System) ส่วนตัว เพิ่มเติมครับ

%d bloggers like this: