2009-06-20 3 views
9

다소 기본적인 문제가 있습니다. CakePHP를 SQLite 데이터베이스에 연결할 수 없습니다. 의외로, 나는 틀린 키워드를 찾아보고 있을지도 모르지만, 인터넷에 그것에 관하여 많은 정보를 찾아 내지 않았다. 그럼에도 불구하고 이것은 내 연결 코드입니다.CakePHP를 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' => '' 
); 

그래도 Cake는 "Cake는 데이터베이스에 연결할 수 없습니다"라고 말합니다. 또한 "실제"로그 (즉, SQLite "드라이버"에서 반환 된 오류)를 볼 위치를 알지 못합니다. 그래서 막 다른 골목에 섰습니다. 어떻게해야합니까?

미리 감사드립니다.

+0

downvote를 이해하지 못합니다. SO의 정책은 "너무 분명한 질문"이 없다는 것이었지만. –

답변

8

CakePHP 2.0부터 Sqlite 3는 기본적으로 지원됩니다.

SQLite는 당신의 PHP 설정에서 활성화되어 있는지 확인 : 이제

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

당신의 app/webroot/my_database_name.sqlite 파일을 확인 :이 같은 SQLite는 데이터베이스를 정의 할 수 있습니다

phpinfo(); 

app/Config/databases.php 내부.

1

SQLite 3 데이터베이스에 연결 하시겠습니까? CakePHP은 아직 지원하지 않습니다.

그 외의 경우 경로에 /을 추가 할 수 있습니다. 당신이 절대적인 길을 가고자하는 것처럼 보이지만 선구자 없이는 그것이 당신이 생각하는 것을하지 않을 것입니다.

+0

처음에 슬래시가 추가되었습니다. 여기에 경로를 입력 할 때 잊어 버렸습니다 (나는 무고한 사람을 보호하기 위해 이름이 변경된 경로를 다시 입력했습니다). 나는 SQLite 3 문제에 대해 들었지만, 내가 만든 데이터베이스의 버전이 무엇인지 모르겠다. IDE에서이 옵션을 보지 못했다. (Firefox의 Extension SQLite Manager를 사용하고있다.) 어떻게 찾습니까? –

+0

"select sqlite_version()"은 사용중인 sqlite 엔진의 버전을 보여줍니다. –

+0

SQLite Manager를 포기하고 SQLite 2 데이터베이스를 다운로드하고 손을 더럽 히고 데이터베이스를 직접 코딩하여 문제를 해결했습니다. –

6

SQLite3는 아직 공식적으로 CakePHP에서 지원되지 않습니다 ... 아마도이 버그/개선에 첨부 된 파일이 작동하기 때문일 것입니다.

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

잡아

파일의 최신 버전, 어떤 새로운 패치로 업데이트하여 cake/libs/model/datasources/dbo 디렉토리에 업로드하고 database.php 파일에 구성합니다. 내가

내 구성 파일 dbo_sqlite3.php라는 파일을 사용하고

은 드라이버 설정이를 사용

'driver' => 'sqlite3', 
+0

미래 프로젝트에서 사용할 수 있습니다. 감사! –

6

어떻게 sqlite3를 가진 CakePHP의에 :

한 요구 사항 :

단계 :

의 포장을 풀고 데이터 소스는 장소에 플러그인.

편집 dbo_sqlite3.php 및 추가

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

... 바로 '클래스'정의 전에.

은 database.php 파일에 다음과 같은 구성을 사용

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

완료.

+0

그래, 지금은 이미 쉽다. 문제는이 질문이 게시되었을 때 사용할 수 없다는 것이었다. 어쨌든 참조를 위해 투표하십시오. =) –

관련 문제