กระทู้เก่าบอร์ด อ.Yeadram
3,409 3
URL.หัวข้อ /
URL
การเซ็ทค่า ODBC / Client
ผมใช้ MySQL เป็น Back-End , Access2007 เป็น Front-End และใช้ mysql-connector-odbc-3.51.27-win32 เป็นตัว Link ข้อมูล ที่เครื่อง Back-End การตั้งค่า ODBC ตั้งค่าได้ไม่มีปัญหา แต่ที่ฝั่ง Client เวลาตั่งค่ากลับมีปัญาฟ้อง Error "Request returned with SQL-ERROR" ลักษณะเช่นนี้จะแก้ไขได้อย่างไร/โปรแกม Nod32 จะมีผลต่อปัญหานี้หรือไม่ อย่างไร เรียนถามท่านผู้รู้ช่วยหาสาเหตุ/วิธีการแก้ไขให้ด้วย ขอขอบคุณล่วงหน้ามาก ๆๆๆ
3 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R03623
คุณ yeadram ผมแก้ปัญหาได้แล้ว คือต้องไปปลด Fire Wall ของ Nod32 ที่เครื่อง Server ทีนี้ปัญหาที่ตามมา Security ที่เครื่อง Server ไม่ดีแน่นอน ทั้งหมดทำบน Wix Xp Sp2 แต่ถ้าเป็น Xp sp3 ไม่สามารถทำได้เลย ลักษณะเช่นนี้จะแก้ปัญหาได้อย่างไร ขอขอบคุณล่วงหน้า
3 @R03629
ผมไม่เคยทดสอบความแตกต่างระหว่าง sp2 กับ sp3
ผมคงแนะนำได้ไม่ถูกแน่ๆ
แต่จากการฟังคุณเล่า ผมขอเดาว่าปัญหาหลักมาจาก nod32 ดักจับ packet ระหว่างเครือข่าย ผมคิดว่า มันน่าจะตั้งค่าได้ที่ nod ว่าจะให้ดักจับอะไร ไม่ให้ดักจับอะไร คืออย่าตรวจจับ port สำคัญ 3 พอร์ต สำหรับ วินโดวส์ 139 145 อีกอันจำไม่ได้แล้ว สามรูนี้มีไว้แชร์ข้อมูลสำคัญเช่นการต่อปรินท์เตอร์ การแชร์ข้อมูลเป็นต้น
และอีก พอร์ต คือ พอร์ตของ mysql (ถ้าไม่ได้กำหนดแตกต่างออกไป) ปกติมันคือพอร์ต 3306 อันนี้ไม่ทราบว่า ระบุให้ nod32 ได้ไหมครับว่าอย่ายุ่งกับ port นี้
* ปล. ผมไม่เคยใช้ nod32
ผมคงแนะนำได้ไม่ถูกแน่ๆ
แต่จากการฟังคุณเล่า ผมขอเดาว่าปัญหาหลักมาจาก nod32 ดักจับ packet ระหว่างเครือข่าย ผมคิดว่า มันน่าจะตั้งค่าได้ที่ nod ว่าจะให้ดักจับอะไร ไม่ให้ดักจับอะไร คืออย่าตรวจจับ port สำคัญ 3 พอร์ต สำหรับ วินโดวส์ 139 145 อีกอันจำไม่ได้แล้ว สามรูนี้มีไว้แชร์ข้อมูลสำคัญเช่นการต่อปรินท์เตอร์ การแชร์ข้อมูลเป็นต้น
และอีก พอร์ต คือ พอร์ตของ mysql (ถ้าไม่ได้กำหนดแตกต่างออกไป) ปกติมันคือพอร์ต 3306 อันนี้ไม่ทราบว่า ระบุให้ nod32 ได้ไหมครับว่าอย่ายุ่งกับ port นี้
* ปล. ผมไม่เคยใช้ nod32
Time: 0.3355s
ดูว่า มัน error กับทุกๆ statement หรือเปล่า
เช่น
- select * from table1
- insert into tbtemp select * from table1
- select count(*) as c from table1
ถ้ามันเกิด error ในทุกๆ statement แสดงว่า ตัวคอนเน็ค มีปัญหาซึ่งอาจจะมาจาก เรื่องของ ระดับสิทธิ์ในฐานข้อมูล
ให้ลองดูที่ mysql ว่าได้อนุญาต ให้เครื่องลูกข่ายนี้ เข้าไปใช้งานได้หรือไม่
ระดับการอนุญาต มีมากน้อยเพียงใด
ลองรัน statement ชุดนี้ทาง mysql ดูครับ
#คำสั่งอนุญาติใช้ข้อมูล
GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE
ON [ชื่อฐานข้อมูล].*
TO '[ชื่อผู้ใช้]'@'[ไอพีแอดเดรสของเครื่องลูกข่าย]'
IDENTIFIED BY '[รหัสผ่านผู้ใช้]';
รูปแบบฟังก์ชั่นสำหรับสร้างการเชื่อมต่อแบบ dns-less พร้อมตัวอย่างการทดสอบการเชื่อมต่อ
SV = "ชื่อserver"
DB = "ชื่อฐานข้อมูล"
UN="ชื่อผู้ใช้"
PW="รหัสผ่านผู้ใช้"
ConnectString = "DRIVER={MySQL ODBC 5.1 Driver};" & _
"SERVER=" & SV & _
";DATABASE=" & DB & ";" & _
"USER=" & UN & _
";PASSWORD=" & PW & _
";OPTION=3;"
Set cn = createobject("ADODB.Connection")
on error resume next
cn.Open ConnectString
if cn.state=0 or err.number<>0 then
msgbox "cannot connect to database" & vbcrlf & _
err.description
else
msgbox "ต่อได้แล้วว"
end if
cn.Close
Set cn = Nothing
ปกติผมไม่ค่อยชอบสร้าง odbc แบบ dns เอาไว้ ผมมักเขียนเป็นฟังก์ชั่น แบบนี้ (dns-less)
ลองดูว่า พอจะเอาไปประยุกต์ได้ไหมครับ