diff --git a/README b/README index e320ba4..25c2896 100644 --- a/README +++ b/README @@ -14,23 +14,14 @@ SilverStripe 2.4 or newer Installation ------------ -copy the sqlite3 folder to your project root so that it becomes a sibling of cms, sapphire and co -add this to your _config.php (right after "require_once("conf/ConfigureFromEnv.php");" if you are using _ss_environment.php) +download, unzip and copy the sqlite3 folder to your project root so that it becomes a sibling of cms, sapphire and co. + +either use the installer to automatically install SQLite or add this to your _config.php (right after "require_once("conf/ConfigureFromEnv.php");" if you are using _ss_environment.php) $databaseConfig['type'] = 'SQLiteDatabase'; you are done! - -Config ------- -you can set the path for storing your SQLite db file or make use of the :memory: feature in sqlite3/_config.php like this: - - $databaseConfig = array( - 'path' => '/some/path', - 'memory' => true, - ); - make sure the webserver has sufficient privileges to write to that folder and that it is protected from external access. @@ -42,21 +33,12 @@ E.g.: http://www.my-project.com/?avoidConflict=1 Tested stacks ------------- OSX leopard, XAMPP with PHP 5.3.0, SQLite3.6.3 +OSX leopard, MAMP with PHP 5.2.6, SQLite3.3.7 Ubuntu, PHP 5.2.4, SQLite3.4.2 WinXP, XAMPP with PHP 5.3.0, SQLite3.6.16 Open Issues ----------- -- SQLite3 may not work with certain modules as they are using custom SQL statements passed to the DB class directly ;( +- SQLite3 is supposed to work with all may not work with certain modules as they are using custom SQL statements passed to the DB class directly ;( - there is no real fulltext search yet and the build-in search engine is not ordering by relevance, check out fts3 - -Things to note when using SQLite3 ---------------------------------- -- small, fast, zero configuration, single cross-platform disk file, comes with a CLI and In-Memory database feature -- sometimes the only feasible solution when you don't have access to the usual DBMSs like MySQL -- weakly and dynamically typed although this should have been caught in the adapter -- does not fully implement SQL-92 standard, e.g. the ALTER TABLE syntax is limited to adding and renaming fields -- references for sqlite are e.g. ADOBE (Photoshop Lightroom), Apple (Safari, Mail, iPod, iPhone) Mozilla (Firefox, Thunderbird), Google (Chrome) -- if you are looking for a SQLite client for debugging, the SQLite plugin for firefox may be worth a try - diff --git a/_config.php b/_config.php index 1d9f4b7..b92712e 100644 --- a/_config.php +++ b/_config.php @@ -5,13 +5,11 @@ if(defined('SS_DATABASE_CLASS')) $databaseConfig['type'] = SS_DATABASE_CLASS; if(array_search($databaseConfig['type'], array('SQLiteDatabase', 'SQLite3Database', 'SQLitePDODatabase')) !== false) { - $databaseConfig = array( - 'type' => $databaseConfig['type'], - 'database' => (defined('SS_DATABASE_PREFIX') ? SS_DATABASE_PREFIX : '') . $database . (defined('SS_DATABASE_SUFFIX') ? SS_DATABASE_SUFFIX : ''), - 'path' => defined('SS_SQLITE_DATABASE_PATH') && SS_SQLITE_DATABASE_PATH ? SS_SQLITE_DATABASE_PATH : ASSETS_PATH . '/.sqlitedb/', // where to put the database file - 'memory' => true, // run tests in memory - ); - + if(empty($databaseConfig['path'])) $databaseConfig['path'] = defined('SS_SQLITE_DATABASE_PATH') && SS_SQLITE_DATABASE_PATH ? SS_SQLITE_DATABASE_PATH : ASSETS_PATH . '/.sqlitedb/'; // where to put the database file + $databaseConfig['database'] = (defined('SS_DATABASE_PREFIX') ? SS_DATABASE_PREFIX : '') . $databaseConfig['database'] . (defined('SS_DATABASE_SUFFIX') ? SS_DATABASE_SUFFIX : ''); + if(!isset($databaseConfig['memory'])) $databaseConfig['memory'] = true; // run tests in memory + if(empty($databaseConfig['key'])) $databaseConfig['key'] = defined('SS_SQLITE_DATABASE_KEY') && SS_SQLITE_DATABASE_KEY ? SS_SQLITE_DATABASE_KEY : 'SQLite3DatabaseKey'; + /** * set pragma values on the connection. * @see http://www.sqlite.org/pragma.html @@ -26,7 +24,6 @@ if(array_search($databaseConfig['type'], array('SQLiteDatabase', 'SQLite3Databas $databaseConfig['type'] = 'SQLitePDODatabase'; } else { $databaseConfig['type'] = 'SQLite3Database'; - $databaseConfig['key'] = defined('SS_SQLITE_DATABASE_KEY') && SS_SQLITE_DATABASE_KEY ? SS_SQLITE_DATABASE_KEY : 'SQLite3DatabaseKey'; } }