2009-06-20 38 views
9

Tôi có một vấn đề khá cơ bản: Tôi dường như không thể kết nối CakePHP với cơ sở dữ liệu SQLite của mình. Đáng ngạc nhiên, tôi không tìm thấy nhiều thông tin về nó trên internet, mặc dù tôi có thể tra cứu từ khóa sai. Tuy nhiên, đây là mã kết nối của tôi:Làm cách nào để kết nối CakePHP với cơ sở dữ liệu SQLite?

var $default = array(
     'driver' => 'sqlite', 
     'connect' =>'sqlite_popen', 
     'persistent' => false, 
     'host' => 'localhost', 
     'port' => '', 
     'login' => '', 
     'password' => '', 
     'database' => '/home/MY_USER_NAME/public_html/my_database.sqlite', 
     'schema' => '', 
     'prefix' => '', 
     'encoding' => '' 
); 

Tuy nhiên, bánh chỉ nói "Bánh KHÔNG thể kết nối với cơ sở dữ liệu". Ngoài ra, tôi không biết nơi để xem các bản ghi "thực" (tức là, lỗi được trả về từ trình điều khiển "SQLite"). Vì vậy, tôi đánh một cái chết. Tôi nên làm gì?

Xin cảm ơn trước.

+0

Không hiểu ý chính: mặc dù chính sách của SO là không có "câu hỏi quá rõ ràng". –

Trả lời

8

Kể từ CakePHP 2.0, Sqlite 3 được hỗ trợ ngoài hộp.

Hãy chắc chắn rằng sqlite được kích hoạt trong cấu hình PHP của bạn:

phpinfo(); 

Bên app/Config/databases.php bạn có thể xác định cơ sở dữ liệu Sqlite như thế này:

public $default = array(
     'datasource' => 'Database/Sqlite', 
     'persistent' => false, 
     'database' => 'my_database_name', 
     'prefix' => '', 
     'encoding' => 'utf8', 
); 

Bây giờ kiểm tra tập tin app/webroot/my_database_name.sqlite của bạn.

1

Bạn đang cố gắng kết nối với cơ sở dữ liệu SQLite 3? CakePHP chưa hỗ trợ chúng.

Ngoài ra, bạn có thể muốn thử thêm / hàng đầu trong đường dẫn của mình. Có vẻ như bạn đang cố gắng để làm một con đường tuyệt đối nhưng không có dấu gạch chéo hàng đầu nó sẽ không làm những gì bạn nghĩ rằng nó sẽ làm.

+0

Đã thêm dấu gạch chéo hàng đầu, chỉ cần quên nó khi gõ đường dẫn ở đây (tôi đã gõ lại đường dẫn có tên thay đổi để bảo vệ người vô tội). Tôi đã nghe về vấn đề SQLite 3, nhưng tôi không biết phiên bản của cơ sở dữ liệu mà tôi đã tạo ra là gì, không thấy tùy chọn này trong IDE (Tôi đang sử dụng Trình quản lý SQLite mở rộng của Firefox). Làm thế nào để tôi tìm thấy nó? –

+0

"chọn sqlite_version()" sẽ hiển thị cho bạn phiên bản của động cơ sqlite đang được sử dụng. –

+0

Giải quyết vấn đề bằng cách từ bỏ Trình quản lý SQLite, tải xuống cơ sở dữ liệu SQLite 2, làm cho bàn tay của tôi bị bẩn và tự mã hóa cơ sở dữ liệu. –

6

SQLite3 chưa được hỗ trợ chính thức bởi CakePHP ... có thể do tệp được đính kèm với lỗi/cải tiến này hoạt động.

https://trac.cakephp.org/ticket/3003

Grab phiên bản mới nhất của tập tin, cập nhật nó với bất kỳ bản vá lỗi mới, upload nó vào thư mục cake/libs/model/datasources/dbo của bạn và cấu hình nó trong file database.php của bạn.

Tôi đang sử dụng một tập tin gọi dbo_sqlite3.php

tập tin cấu hình của tôi sử dụng này cho các thiết lập tài xế:

'driver' => 'sqlite3', 
+0

Thật tuyệt khi biết rằng, tôi có thể sử dụng nó trong các dự án trong tương lai! Cảm ơn! –

6

Làm thế nào để CakePHP với SQLite3:

ñònh:

bước:

Giải nén datasources cắm tại chỗ.

Sửa dbo_sqlite3.php và thêm:

App::import('Datasource','DboSource'); 

... ngay trước khi định nghĩa 'lớp'.

Sử dụng các cấu hình sau đây trong tập tin database.php của bạn:

var $default = array(
    'datasource' => 'Datasources.DboSqlite3', 
    'login' => '', 
    'password' => '', 
    'database' => '/full/path/to/db.sqlite'); 

Done.

+0

Vâng, bây giờ thật dễ dàng = D vấn đề là chúng không có sẵn khi câu hỏi này được đăng. Bỏ phiếu cho tham chiếu anyway. =) –

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