Tìm kiếm tài liệu tốt về các tập tin odbc.ini và odbcinst.ini trên Linux


11

Tôi đã thấy một phần thông tin, thông tin cũ, nhưng không có gì tốt bằng các tệp mẫu thực tế với các nhận xét ngắn gọn mà tôi có tại địa phương.

Tôi cần hiểu mối quan hệ chính xác giữa odbc.iniodbcinst.ini. Nhìn bề ngoài thì nó khá rõ ràng - ở đầu odbc.initập tin có một phần như:

[ODBC Data Sources]
MYDSN = MyDriverName
...

Tuy nhiên, tôi không chắc chắn nếu tôi có thể, ví dụ, có các cài đặt trong trình điều khiển hoặc phần DSN.

1) Tôi có một dòng Driver = /path/to/file/.sotrong cả hai tệp và các giá trị đôi khi khác nhau. Điều này thậm chí có ý nghĩa? Nếu vậy, cái nào thắng thế?

2) Là odbcinst.inimột "nguyên mẫu" giống như JavaScript cho odbc.ini? Nói cách khác, nếu tôi đang tạo ra một số DSN với các thiết lập chung, tôi có thể thúc đẩy các thiết lập phổ biến từ odbc.inithành odbcinst.ini?

3) Sự khác biệt giữa DriverSetuptrong là odbcinst.inigì? Họ dường như có cùng các giá trị. Là những thiết lập cơ sở dữ liệu cụ thể hoặc chúng là phổ quát?



Tôi nghĩ rằng các liên kết ở trên sẽ giúp trả lời. Hãy nghĩ về điều này, nếu bạn định cấu hình tệp odbc.ini cho nguồn dữ liệu ORACLE, làm thế nào để hệ thống biết ORACLE là gì, đây là những gì odbcinst.ini định nghĩa. Đây có thể chỉ là cục bộ của một bộ đường dẫn / phần mềm cụ thể, thay vì "toàn hệ thống".
Schrute

Câu trả lời:


9

Tôi sử dụng FreeTDStrên Debianđể kết nối một phptrang web tạo đà cho một MS-SQL Server 2005cơ sở dữ liệu.

Lời giải thích tôi có thể đưa ra cho các tập tin cấu hình:

/etc/odbc.ini

Giữ ví dụ được đề cập trong trình xử lý (ví dụ php) kết nối với cơ sở dữ liệu (xem ví dụ bên dưới). Cấu hình xác định máy chủ mà nó cần kết nối.

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

-

/etc/odbcinst.ini

Giữ cấu hình cho Driverphần trong odbc.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

phpMã ví dụ để trình bày cách tôi thiết lập và sử dụng kết nối.

  $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);
  }

Vân vân..

Tôi chắc chắn có nhiều biến khác có thể được đặt và sử dụng nhưng đây là lời giải thích đơn giản nhất tôi có thể đưa ra về các tệp bạn đã hỏi về.


4

Nếu bạn chỉ nhìn vào các triển khai Unix, bạn sẽ nhận được một số ý tưởng thú vị về cách ODBC hoạt động. Không có cách triển khai nào trong số này có thể so sánh 100% với việc triển khai tham chiếu trên Windows, được sản xuất bởi người duy trì thông số ODBC, tức là Microsoft .

Có hai trình quản lý trình điều khiển ODBC thường được tìm thấy trên Unix. iODBC , có tài liệu liên quan đến câu hỏi này ở đây , được duy trì và hỗ trợ bởi chủ nhân của tôi. UnixODBC là cái khác, và đã được thảo luận trong các câu trả lời khác. Chúng có nghĩa là API tương đương với nhau và với việc triển khai Windows, vì cả hai đều là các triển khai không dựa trên nền tảng của tiêu chuẩn.

Nói một cách đơn giản, odbcinst.inilà tệp đăng ký và cấu hình cho trình điều khiển ODBC trong môi trường, trong khi đó odbc.inilà tệp đăng ký và cấu hình cho ODBC DSN (Tên nguồn dữ liệu), thường dựa trên các trình điều khiển được đăng ký trong các trình điều khiển khác.

Bạn đã có một vài câu hỏi cụ thể ...

1) Tôi có một dòng Driver = /path/to/file/.sotrong cả hai tệp và các giá trị đôi khi khác nhau. Điều này thậm chí có ý nghĩa? Nếu vậy, cái nào thắng thế?

Các Driver = /path/to/file.sothường nên là như nhau trong cả hai tập tin khi cả hai đều thể hiện dưới dạng đường dẫn. Thay vào đó odbc.ini, mục này có thể là Driver = {name of driver}nơi tên được lập chỉ mục odbcinst.ini. Nói chung, cài đặt odbc.inichiếm ưu thế so với cài đặt xung đột trong trường odbcinst.inihợp đó tồn tại.

2) Là odbcinst.inimột "nguyên mẫu" giống như JavaScript cho odbc.ini? Nói cách khác, nếu tôi đang tạo ra một số DSN với các thiết lập chung, tôi có thể thúc đẩy các thiết lập phổ biến từ odbc.inithành odbcinst.ini?

Không, odbcinst.inikhông phải là "nguyên mẫu" theo cách này. odbcinst.inicài đặt có liên quan đến trình điều khiển , nhưng không liên quan đến DSN dựa trên trình điều khiển đó.

3) Sự khác biệt giữa DriverSetuptrong là odbcinst.inigì? Họ dường như có cùng các giá trị. Là những thiết lập cơ sở dữ liệu cụ thể hoặc chúng là phổ quát?

Trong odbcinst.ini, Driver =đề cập đến thư viện trình điều khiển và Setup =thư viện thiết lập. Cái sau là hoàn toàn tùy chọn, và khi nó tồn tại, nó có thể nhưng không cần được sử dụng trong khi kết nối dữ liệu; nó chủ yếu được sử dụng bởi Quản trị viên ODBC khi "thiết lập" các kết nối đó, được lưu dưới dạng DSN. Đôi khi, các thư viện này được tìm thấy trong cùng một tệp vật lý, nhưng chúng không cần, và, ví dụ, thường không có trong môi trường OS X.


1

Được rồi, sự khác biệt đơn giản giữa odbcinst.ini và odbc.ini từ trang web unixodbc , đây là lần truy cập đầu tiên trên google:

Tệp hệ thống odbcinst.ini chứa thông tin về trình điều khiển ODBC có sẵn cho tất cả người dùng và tệp odbc.ini chứa thông tin về DSN có sẵn cho tất cả người dùng. Các "Hệ thống DSN" này hữu ích cho ứng dụng, chẳng hạn như các máy chủ web có thể không chạy như một người dùng thực và do đó sẽ không có thư mục chính để chứa tệp .odbc.ini.


Cảm ơn. Tôi đã quên đề cập rằng tôi đã suy luận rất nhiều từ cú pháp - thực sự mọi DSN phải chỉ định một trình điều khiển ở đầu odbc.ini với cú pháp {DSN} = {Driver} nhưng tôi vẫn còn bối rối.
Leonid

0

Các hướng dẫn được cho là ở đây (bấm vào Manualssau đó User Manual). Nhưng không may các liên kết cho Administrator ManualProgrammer Manualbị hỏng. (Tôi đã báo cáo điều này và được thông báo rằng họ sẽ được sửa chữa.)

Vì vậy, bây giờ ...

Hướng dẫn sử dụng bị thiếu được tìm thấy bằng cách tải xuống unixODBC-2.3.4.tar.gz từ http://www.unixodbc.org/ và sau đó mở nó bằng trình quản lý lưu trữ (hoặc tương tự) và xem ba hướng dẫn sau:

/doc/AdministratorManual/index.html
/doc/ProgrammerManual/index.html
/doc/ProgrammerManual/Tutorial/index.html
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.