2009-10-14 46 views

Trả lời

39

tôi có thể nghĩ bốn cách giải quyết có thể cho kịch bản của bạn:

  1. sử dụng đầy đủ trình độ-table-tên khi truy vấn cho bên ngoài bảng. MySQL hỗ trợ dbname.tablename -syntax để truy cập các bảng bên ngoài phạm vi cơ sở dữ liệu hiện tại. Điều này yêu cầu người dùng hiện được kết nối có quyền thích hợp để đọc từ bảng được yêu cầu trong một db vật lý khác.
  2. nếu cơ sở dữ liệu bên ngoài của bạn đang chạy trên một máy chủ MySQL khác (trên cùng một máy hoặc qua kết nối mạng), bạn có thể sử dụng sao chép để liên tục cập nhật bản sao chỉ đọc của bảng từ xa. Sao chép chỉ có thể thực hiện được nếu bạn đang chạy hai cá thể MySQL riêng biệt.
  3. sử dụng FEDERATED MySQL storage engine để hầu như nhập bảng vào cơ sở dữ liệu hiện tại của bạn. Điều này nâng cao yêu cầu cấp quyền truy cập người dùng hiện tại vào cơ sở dữ liệu thứ hai khi thông tin đăng nhập được cung cấp với mã số CREATE TABLE khi sử dụng công cụ lưu trữ FEDERATED. Điều này cũng làm việc với các cơ sở dữ liệu chạy trên các máy chủ vật lý khác nhau hoặc các cá thể MySQL khác nhau. Tôi nghĩ rằng đây sẽ là tùy chọn hoạt động kém nhất và có một số limitations - nhiều hơn hoặc ít quan trọng hơn tùy thuộc vào tình huống sử dụng và yêu cầu của bạn.
  4. Đây là phần mở rộng cho phương pháp 1. Thay vì phải chỉ định tên bảng đủ điều kiện mỗi khi bạn yêu cầu thông tin từ bảng bên ngoài của mình, bạn chỉ cần tạo một số view bên trong cơ sở dữ liệu hiện tại của mình SELECT <<columns>> FROM <<database>>.<<table>>. Điều này giống như cách thức, các công trình FEDERATED -method, nhưng được giới hạn trong các bảng trên cùng một cá thể MySQL.

Cá nhân tôi coi phương pháp (4) là phương pháp hữu ích nhất - nhưng những cách khác cũng có thể là giải pháp có thể tùy thuộc vào yêu cầu của bạn.

+1

Công cụ lưu trữ liên tục có thể giải quyết được sự cố của tôi. Tôi sẽ thử nó. – Palani

+1

Tôi nghĩ rằng công cụ lưu trữ FEDERATED là giải pháp gần nhất để liên kết cơ sở dữ liệu oracle trong kịch bản cơ sở dữ liệu chạy trên các máy chủ vật lý khác nhau hoặc các cá thể MySQL khác nhau. Trên cùng một ví dụ, bạn có thể làm mọi thứ với tên bảng đầy đủ. Cảm ơn Stefan. – csonuryilmaz

5

Hiện không có phương pháp tương đương MySQL nào, xem this post. Tuy nhiên khi áp phích đề xuất bạn có thể thực hiện một công việc xung quanh nếu các cơ sở dữ liệu trên cùng một máy, bằng cách chỉ thêm tên cơ sở dữ liệu ở phía trước tên bảng.

Đồng thời xem this, đã 6 tuổi nhưng vẫn chưa được giải quyết. Nó đóng cửa và có lẽ không phải trên danh sách todo của họ nữa.

Các vấn đề liên quan