Saturday, June 25, 2005
MySQL Import ตารางมีข้อผิดพลาด
วันนี้ทำการ import ตารางข้อมูลจากเครื่องเซิร์ฟเวอร์จำลอง (localhost) ขึ้นเซิร์ฟเวอร์จริง (www.bc.msu.ac.th) ปรากฏ error ดังนี้
#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='News Table' AUTO_
ก ็กลับมาดูว่ามี อะไรเกิดขึ้นปรากฏว่าเครื่อง localhost ลง MySQL เวอร์ชัน 4.1.10 ส่วน MySQL ที่เซิร์ฟเวอร์เป็นเวอร์ชัน 4.0.15 ก็สรุปได้ว่าเป็นปัญหานี้เกิดจากการ Import โครงสร้างตารางจากเวอร์ชัน 4.1.x ไปสู่เวอร์ชัน 4.0.x หรือต่ำกว่า เพราะในเวอร์ชัน 4.1.x จะมีการเพิ่มพารามิเตอร์ DEFAULT CHARSET="xxx" เข้ามาด้วย และ เปลี่ยนพารามิเตอร์ TYPE=MyISAM เป็น ENGINE=MyISAM ซึ่งแตกต่างจากในเวอร์ชันก่อนหน้าู่ทำให้เกิด error ขึ้นได้
วิธีการแก้ไขต้องไปลบพารามิเตอร์ DEFAULT CHARSET="xxx" ออกแล้ว และเปลี่ยนคำว่า ENGINE=MyISAM เป็น TYPE=MySIAM แล้วทำการ Import ใหม่ครับ ทั้งนี้ทั้งนั้นข้อแตกต่างอาจจะมีมาในรูปแบบอื่น การแก้ไขก็คงอาศัยหลักการเดียวกัน คือ ต้องเปรียบเทียบหาว่ามีอะไรที่แตกต่างกันบ้าง แล้วก็แก้ให้เหมาะกับแต่ละเวอร์ชันครับ
เปรียบเทียบโครงสร้างตารางจากสองเวอร์ชัน
MySQL 4.0.x
# phpMyAdmin SQL Dump
# version 2.5.3
# http://www.phpmyadmin.net
#
# โฮสต์: www.bc.msu.ac.th
# เวลาในการสร้าง: 25 มิ.ย. 2005 09:22น.
# รุ่นของเซิร์ฟเวอร์: 4.0.15
# รุ่นของ PHP: 4.3.3
#
# ฐานข้อมูล : `vmdb`
#
# --------------------------------------------------------
#
# โครงสร้างตาราง `web_news`
#
DROP TABLE IF EXISTS `web_news`;
CREATE TABLE `web_news` (
`news_id` int(11) NOT NULL auto_increment,
`news_timestamp` varchar(19) default NULL,
`news_title` varchar(255) default NULL,
`news_head` text,
`news_detail` text,
`news_datetime` varchar(18) default NULL,
`news_order` int(11) default '0',
`news_status` char(1) default NULL,
PRIMARY KEY (`news_id`)
) TYPE=MyISAM COMMENT='News Table' AUTO_INCREMENT=11 ;
MySQL 4.1.x
# phpMyAdmin SQL Dump
# version 2.5.7-pl1
# http://www.phpmyadmin.net
#
# โฮสต์: localhost
# เวลาในการสร้าง: 25 มิ.ย. 2005 9.00น.
# รุ่นของเซิร์ฟเวอร์: 4.1.10
# รุ่นของ PHP: 5.0.4
#
# ฐานข้อมูล : `vmdb`
#
# --------------------------------------------------------
#
# โครงสร้างตาราง `web_news`
#
DROP TABLE IF EXISTS `web_news`;
CREATE TABLE `web_news` (
`news_id` int(11) NOT NULL auto_increment,
`news_timestamp` varchar(19) default NULL,
`news_title` varchar(255) default NULL,
`news_head` text,
`news_detail` text,
`news_datetime` varchar(18) default NULL,
`news_order` int(11) default '0',
`news_status` char(1) default NULL,
PRIMARY KEY (`news_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='News Table' AUTO_INCREMENT=11 ;
#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='News Table' AUTO_
ก ็กลับมาดูว่ามี อะไรเกิดขึ้นปรากฏว่าเครื่อง localhost ลง MySQL เวอร์ชัน 4.1.10 ส่วน MySQL ที่เซิร์ฟเวอร์เป็นเวอร์ชัน 4.0.15 ก็สรุปได้ว่าเป็นปัญหานี้เกิดจากการ Import โครงสร้างตารางจากเวอร์ชัน 4.1.x ไปสู่เวอร์ชัน 4.0.x หรือต่ำกว่า เพราะในเวอร์ชัน 4.1.x จะมีการเพิ่มพารามิเตอร์ DEFAULT CHARSET="xxx" เข้ามาด้วย และ เปลี่ยนพารามิเตอร์ TYPE=MyISAM เป็น ENGINE=MyISAM ซึ่งแตกต่างจากในเวอร์ชันก่อนหน้าู่ทำให้เกิด error ขึ้นได้
วิธีการแก้ไขต้องไปลบพารามิเตอร์ DEFAULT CHARSET="xxx" ออกแล้ว และเปลี่ยนคำว่า ENGINE=MyISAM เป็น TYPE=MySIAM แล้วทำการ Import ใหม่ครับ ทั้งนี้ทั้งนั้นข้อแตกต่างอาจจะมีมาในรูปแบบอื่น การแก้ไขก็คงอาศัยหลักการเดียวกัน คือ ต้องเปรียบเทียบหาว่ามีอะไรที่แตกต่างกันบ้าง แล้วก็แก้ให้เหมาะกับแต่ละเวอร์ชันครับ
เปรียบเทียบโครงสร้างตารางจากสองเวอร์ชัน
MySQL 4.0.x
# phpMyAdmin SQL Dump
# version 2.5.3
# http://www.phpmyadmin.net
#
# โฮสต์: www.bc.msu.ac.th
# เวลาในการสร้าง: 25 มิ.ย. 2005 09:22น.
# รุ่นของเซิร์ฟเวอร์: 4.0.15
# รุ่นของ PHP: 4.3.3
#
# ฐานข้อมูล : `vmdb`
#
# --------------------------------------------------------
#
# โครงสร้างตาราง `web_news`
#
DROP TABLE IF EXISTS `web_news`;
CREATE TABLE `web_news` (
`news_id` int(11) NOT NULL auto_increment,
`news_timestamp` varchar(19) default NULL,
`news_title` varchar(255) default NULL,
`news_head` text,
`news_detail` text,
`news_datetime` varchar(18) default NULL,
`news_order` int(11) default '0',
`news_status` char(1) default NULL,
PRIMARY KEY (`news_id`)
) TYPE=MyISAM COMMENT='News Table' AUTO_INCREMENT=11 ;
MySQL 4.1.x
# phpMyAdmin SQL Dump
# version 2.5.7-pl1
# http://www.phpmyadmin.net
#
# โฮสต์: localhost
# เวลาในการสร้าง: 25 มิ.ย. 2005 9.00น.
# รุ่นของเซิร์ฟเวอร์: 4.1.10
# รุ่นของ PHP: 5.0.4
#
# ฐานข้อมูล : `vmdb`
#
# --------------------------------------------------------
#
# โครงสร้างตาราง `web_news`
#
DROP TABLE IF EXISTS `web_news`;
CREATE TABLE `web_news` (
`news_id` int(11) NOT NULL auto_increment,
`news_timestamp` varchar(19) default NULL,
`news_title` varchar(255) default NULL,
`news_head` text,
`news_detail` text,
`news_datetime` varchar(18) default NULL,
`news_order` int(11) default '0',
`news_status` char(1) default NULL,
PRIMARY KEY (`news_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='News Table' AUTO_INCREMENT=11 ;
Comments:
<< Home
cheap oakley sunglasses
ugg boots
jordan 4
ugg outlet
michael kors outlet
jerseys wholesale
ralph lauren
bengals jersey
christian louboutin shoes
dolphins jerseys
ugg boots
jordan 4
ugg outlet
michael kors outlet
jerseys wholesale
ralph lauren
bengals jersey
christian louboutin shoes
dolphins jerseys
WWW0602
nike foamposite
supra shoes
grizzlies jerseys
michael kors outlet
balmain jeans
mulberry handbags
pandora charms
michael kors handbags
adidas outlet
oakley sunglasses
nike foamposite
supra shoes
grizzlies jerseys
michael kors outlet
balmain jeans
mulberry handbags
pandora charms
michael kors handbags
adidas outlet
oakley sunglasses
mlb jerseys
canada goose uk
adidas yeezy
moncler outlet
yeezy boost 350 v2
pandora charms
coach factory outlet
supreme outlet
ralph lauren uk
nike outlet store
Post a Comment
canada goose uk
adidas yeezy
moncler outlet
yeezy boost 350 v2
pandora charms
coach factory outlet
supreme outlet
ralph lauren uk
nike outlet store
<< Home