กำลังมองหาเอกสารที่ดีของไฟล์ odbc.ini และ odbcinst.ini บน Linux


11

ฉันเห็นข้อมูลบางส่วนข้อมูลเก่า แต่ไม่มีอะไรดีเท่ากับไฟล์ตัวอย่างจริงที่มีความคิดเห็นสั้น ๆ ที่ฉันมีในเครื่อง

ฉันต้องการที่จะเข้าใจความสัมพันธ์ระหว่างแน่นอนและodbc.ini odbcinst.iniผิวเผินมันค่อนข้างชัดเจน - ที่ด้านบนของodbc.iniไฟล์มีส่วนดังนี้:

[ODBC Data Sources]
MYDSN = MyDriverName
...

อย่างไรก็ตามฉันไม่แน่ใจว่าสามารถทำได้เช่นมีการตั้งค่าในไดรเวอร์หรือส่วน DSN

1) ฉันมีDriver = /path/to/file/.soทั้งบรรทัดในไฟล์และบางครั้งค่าต่างกัน มันสมเหตุสมผลหรือไม่ ถ้าเป็นเช่นนั้น

2) odbcinst.iniเป็น "ต้นแบบ" แบบ JavaScript odbc.iniหรือเปล่า? กล่าวอีกนัยหนึ่งถ้าฉันสร้าง DSN จำนวนหนึ่งด้วยการตั้งค่าทั่วไปฉันสามารถโปรโมตการตั้งค่าทั่วไปจากodbc.iniภายในได้odbcinst.iniหรือไม่

3) ความแตกต่างระหว่างDriverและSetupในodbcinst.iniคืออะไร? พวกเขาดูเหมือนจะมีค่าเดียวกัน การตั้งค่าเฉพาะฐานข้อมูลเหล่านี้เป็นสากลหรือ?



ฉันคิดว่าลิงก์ด้านบนจะช่วยตอบ ลองคิดดูสิถ้าคุณกำหนดค่าไฟล์ odbc.ini สำหรับแหล่งข้อมูล ORACLE ระบบจะทราบได้อย่างไรว่า ORACLE คืออะไรนี่คือสิ่งที่ odbcinst.ini กำหนด นี่อาจเป็นเพียงชุดของเส้นทาง / ซอฟต์แวร์ที่เฉพาะเจาะจงแทนที่จะเป็น "ระบบกว้าง"
Schrute

คำตอบ:


9

ผมใช้FreeTDSในDebianการเชื่อมต่อphpเว็บไซต์ขับเคลื่อนไปยังMS-SQL Server 2005ฐานข้อมูล

คำอธิบายที่ฉันสามารถมอบให้กับไฟล์ปรับแต่ง:

/etc/odbc.ini

เก็บอินสแตนซ์ที่อ้างถึงภายในตัวจัดการ (เช่นphp) ที่เชื่อมต่อกับฐานข้อมูล (ดูตัวอย่างด้านล่าง) การกำหนดค่ากำหนดเซิร์ฟเวอร์ที่ต้องการเชื่อมต่อ

[freetds_odbc_connection]
Driver          =       FreeTDS
Description     =       test
Database        =       MyCompanyDb
Server          =       frodo
Readonly        =       Yes
Port            =       1433
Trace           =       No

-

/etc/odbcinst.ini

ถือการกำหนดค่าสำหรับในส่วนDriverodbc.ini

[FreeTDS]
Description     = TDS connection
Driver          = /usr/lib/odbc/libtdsodbc.so
Setup           = /usr/lib/odbc/libtdsS.so
UsageCount      = 1
FileUsage       = 1
Trace           = Yes
TraceFile       = /tmp/odbcinst_tr

-

show-companies.php

phpรหัสตัวอย่างเพื่อสาธิตวิธีการตั้งค่าและใช้การเชื่อมต่อ

  $host="freetds_odbc_connection";
  $user="freetds";
  $password="secretpassword";
  $conn_id = odbc_connect($host, $user ,$password) or die (odbc_errormsg());

  $sql_companies =  "SELECT * from AMGR_Client_Tbl WHERE Record_Type='1'";

  $query_companies = odbc_exec($conn_id, $sql_companies);
  while (odbc_fetch_row($query_companies))
  {
    $client_id     = odbc_result($query_companies, 6);
    $company_name  = odbc_result($query_companies, 9);
  }

ฯลฯ .. ฯลฯ

ฉันแน่ใจว่ามีตัวแปรอื่น ๆ อีกมากมายที่สามารถตั้งค่าและใช้งานได้ แต่นี่เป็นคำอธิบายที่ง่ายที่สุดที่ฉันสามารถให้ไฟล์ที่คุณถามเกี่ยวกับ


4

ถ้าคุณดูเฉพาะการใช้ Unix คุณจะได้รับแนวคิดที่น่าสนใจเกี่ยวกับการทำงานของ ODBC ไม่มีการใช้งานเหล่านี้เป็น 100% ใกล้เคียงกับการใช้งานบน Windows อ้างอิงที่ผลิตโดยผู้ดูแลของข้อมูลจำเพาะ ODBC เช่นไมโครซอฟท์

มีตัวจัดการโปรแกรมควบคุม ODBC สองตัวที่พบได้ทั่วไปบน Unix iODBCซึ่งมีเอกสารที่เกี่ยวข้องกับคำถามนี้อยู่ที่นี่ได้รับการดูแลและสนับสนุนโดยนายจ้างของฉัน UnixODBCเป็นอีกสิ่งหนึ่งและถูกอภิปรายในคำตอบอื่น ๆ สิ่งเหล่านี้มีความหมายว่าเป็น API ที่เทียบเท่ากันและใช้กับ Windows เนื่องจากทั้งคู่เป็นการใช้แพลตฟอร์มที่ไม่เชื่อเรื่องพระเจ้าของมาตรฐาน

กล่าวอย่างง่าย ๆodbcinst.iniคือไฟล์รีจิสตรีและไฟล์กำหนดค่าสำหรับไดรเวอร์ ODBC ในสภาพแวดล้อมในขณะที่odbc.iniเป็นไฟล์รีจิสตรีและไฟล์กำหนดค่าสำหรับ ODBC DSNs (ชื่อแหล่งข้อมูล) โดยทั่วไปจะขึ้นอยู่กับไดรเวอร์ที่ลงทะเบียนไว้

คุณมีคำถามเฉพาะสองสามข้อ ...

1) ฉันมีDriver = /path/to/file/.soทั้งบรรทัดในไฟล์และบางครั้งค่าต่างกัน มันสมเหตุสมผลหรือไม่ ถ้าเป็นเช่นนั้น

Driver = /path/to/file.soโดยทั่วไปควรจะเหมือนกันในทั้งสองไฟล์เมื่อทั้งสองจะแสดงเป็นเส้นทาง ในodbc.iniรายการนี้อาจเป็นDriver = {name of driver}ชื่อที่จัดทำดัชนีodbcinst.iniแทน โดยทั่วไปแล้วการตั้งค่าจะodbc.iniเหนือกว่าการตั้งค่าที่ขัดแย้งกันodbcinst.iniหากมีอยู่

2) odbcinst.iniเป็น "ต้นแบบ" แบบ JavaScript odbc.iniหรือเปล่า? กล่าวอีกนัยหนึ่งถ้าฉันสร้าง DSN จำนวนหนึ่งด้วยการตั้งค่าทั่วไปฉันสามารถโปรโมตการตั้งค่าทั่วไปจากodbc.iniภายในได้odbcinst.iniหรือไม่

ไม่odbcinst.iniไม่ใช่ "ต้นแบบ" ด้วยวิธีนี้ odbcinst.iniการตั้งค่าเกี่ยวข้องกับไดรเวอร์แต่ไม่สัมพันธ์กับDSNตามไดรเวอร์นั้น

3) ความแตกต่างระหว่างDriverและSetupในodbcinst.iniคืออะไร? พวกเขาดูเหมือนจะมีค่าเดียวกัน การตั้งค่าเฉพาะฐานข้อมูลเหล่านี้เป็นสากลหรือ?

ในodbcinst.iniที่Driver =นี้หมายถึงห้องสมุดคนขับรถและSetup =ไปยังห้องสมุดติดตั้ง หลังเป็นตัวเลือกทั้งหมดและเมื่อมันมีอยู่มันอาจ แต่ไม่จำเป็นต้องใช้ในระหว่างการเชื่อมต่อข้อมูล มีวัตถุประสงค์หลักเพื่อใช้งานโดยผู้ดูแลระบบ ODBC เมื่อ "ตั้งค่า" การเชื่อมต่อดังกล่าวเพื่อบันทึกเป็น DSN บางครั้งไลบรารี่เหล่านี้จะพบในไฟล์ฟิสิคัลเดียวกัน แต่โดยทั่วไปแล้วไม่จำเป็นต้องเป็นเช่นนั้นและโดยทั่วไปจะไม่อยู่ในสภาพแวดล้อม OS X


1

เอาล่ะความแตกต่างง่ายๆระหว่าง odbcinst.ini กับ odbc.ini จากไซต์unixodbcซึ่งเป็น hit แรกใน google:

ไฟล์ระบบ odbcinst.ini มีข้อมูลเกี่ยวกับไดรเวอร์ ODBC สำหรับผู้ใช้ทุกคนและไฟล์ odbc.ini มีข้อมูลเกี่ยวกับ DSN สำหรับผู้ใช้ทุกคน "System DSN's" เหล่านี้มีประโยชน์สำหรับแอปพลิเคชันเช่นเว็บเซิร์ฟเวอร์ที่อาจไม่ทำงานในฐานะผู้ใช้จริงและจะไม่มีโฮมไดเร็กตอรี่ให้เก็บไฟล์. odbc.ini


ขอบคุณ ฉันลืมที่จะพูดถึงว่าฉันอนุมานว่ามากจากไวยากรณ์ - แน่นอน DSN ทุกคนจะต้องระบุไดรเวอร์ที่ด้านบนสุดของ odbc.ini ด้วย {DSN} = {Driver} ไวยากรณ์ แต่ฉันยังคงสับสนมาก
Leonid

0

คู่มือควรอยู่ที่นี่ (คลิกManualsแล้วUser Manual) แต่น่าเสียดายที่ลิงก์สำหรับAdministrator ManualและของProgrammer Manualเสีย (ฉันได้รายงานเรื่องนี้และบอกว่าพวกเขาจะได้รับการแก้ไข)

ดังนั้นตอนนี้ ...

พบคู่มือที่ขาดหายไปโดยการดาวน์โหลด unixODBC-2.3.4.tar.gz จากhttp://www.unixodbc.org/จากนั้นเปิดด้วยตัวจัดการการจัดเก็บ (หรือที่คล้ายกัน) และดูคู่มือสามประการนี้:

/doc/AdministratorManual/index.html
/doc/ProgrammerManual/index.html
/doc/ProgrammerManual/Tutorial/index.html
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.