Tu sei qui
Home ›Drupal-SQLite
Please let our ADS show!
This sites offers only FREE software and it's supported by a few advertisement boxes (no intrusive popups).
Please:
- disable your AdBlocker by adding CoolSoft website to whitelist
- give the proper cookie consent
- enable JavaScript for this website
This seconds wait is to let you update your browser configuration...
Ok, I've done the required changes... now show me your content!Introduzione
Drupal-SQLite è un progetto per rendere Drupal funzionante con un database SQLite.
SQLite è un database leggero, veloce, di pubblico dominio e multipiattaforma.
E' usato da molti importanti progetti opensource; solo per nominarne uno: Mozilla Firefox.
Perchè ne ho bisogno?
Beh, molti hosting provider forniscono PHP 5.2 o successivi gratuitamente, mentre per avere un database MySQL è necessario pagare una (piccola) somma. Se ne vale la pena per siti medio grandi, con centinaia o migliaia di utenti, per siti medio-piccoli (come questo) un database MySQL è uno spreco.
Con Drupal-SQLite è possibile configurare rapidamente un sito Drupal che funzioni immediatamente non appena installato, dato che tutto il DB è contenuto in un singolo file.
Supponi di essere un theme designer o uno sviluppatore di moduli: puoi distribuire il tuo tema in un unico .zip o .tar.gz con un overhead di soli 1,5 Mb.
Questo thread mi ha dato la spinta per iniziare.
In questo lungo post diversi bravi sviluppatori si sono impegnati per aggiungere il supporto a SQLite per Drupal 4.7, 5 e quindi 6. Il thread è ora inattivo dato che la maggioranza di loro si è spostata alla versione 7 di Drupal, che avrà SQLite come cittadino di prima classe tra i DB supportati. Dato però che la transizione alla versione 7 richiederà diverso tempo, Drupal-SQLite può essere usato immediatamente come valida alternativa a Drupal 6.
Alternative
Esistono in rete diverse versioni di Drupal con supporto SQLite, ma nessuna di questa ha soddisfatto le mie aspettative.
Speedtech.it
(link attualmente disattivo)
Funzionante e basata su una verisone di Drupal 5.6 (vecchiotta) modificata per SQLite.
Pro:
- funziona (questo sito l'ha usata fino a 6 mesi fa)
Contro:
- è una versione 5.6 di Drupal, quindi un po vecchia
- non usa i PDO, quindi il supporto ai DB SQLite è limitato alle versioni 2.x (che non sono così performanti come le 3.x)
- non ci sono aggiornamenti da tempo
Siren
Profonda (forse troppo) patch a Drupal 6.x
Pro:
- supporto ai PDO, quindi SQLite versione 3.x
- altri database oltre a SQLite
Contro:
- modifiche molto profonde al codice core di Drupal
Dal sito ufficiale: "According to the needs of PDO and Oracle drivers implementation, ALL core queries and some APIs are hacked for compatibility concern." - anche se basato su Drupal (ver. 6.4) è ora completamente separato da esso; ciò significa che non potrete usare gli update di Drupal.
Drupal-SQLite
Ecco quindi i pro di Drupal-SQLite:
- costruito su Drupal 6.10 (e successive, leggi punto seguente)
- nessun core file modificato (eccetto uno, usato solo durante l'installazione: includes/install.inc.php) (*)
- usa PDO (anche se l'originale Drupal non lo fa), quindi supporto a SQLite 3.x
- supporta una gran numero di moduli e temi Drupal senza modifica
Drupal-SQLite è disponibile in due versioni:
- un archivio .zip pronto per essere scompattato nella radice del vostro server web
- un .patch file da applicare ai sorgenti di Drupal 6.x
Dopo aver installato la versione che preferite, aprite con il browser la pagina index.php del vostro nuovo sito Drupal e siete pronti ad iniziare.
(*) Drupal-SQLite modifica questo file per aggiungere alcune frasi di aiuto all'installazione con database SQLite. Dopo l'installazione questo file non è più usato quindi può essere tranquillamente sovrascritto da aggiornamenti successivi. Gli altri file modificati da Drupal-SQLite sono file aggiuntivi rispetto a Drupal standard.
Ciò significa che sarà possibile installare i successivi aggiornamenti ufficiali di Drupal senza "rompere" Drupal-SQLite.
Requisiti
Drupal-SQLite richiede PHP5 con il supporto PDO-SQLite abilitato.
Questo è fornito tramite l'estensione php_pdo_sqlite.dll
(win) or php_pdo_sqlite.so
(linux).
Per verificare che il supporto sia abilitato, create un file phpinfo.php
contenente:
<?php phpinfo(); ?>
Aprite questo file nel browser e verificate che la sezione pdo_sqlite esista e sia abilitata.
NOTE to XAMPP users:
XAMPP 1.7.0 comes with pdo_sqlite disabled by default. To enable it:
- open
C:\xampp\apache\bin\php.ini
file - find the row containing
;extension=php_pdo_sqlite.dll
- remove the leading
;
to enable PDO-SQLite - restart Apache
Come installare Drupal-SQLite
Scegliete il file da scaricare (in base alla soluzione di hosting e alle vostre preferenze):
- Archivio ZIP
Questa è la soluzione più "comoda", ed è la migliore sia per gli hosting su piattaforma Windows che per quelli su piattaforma Linux.
L'archivio contiene la versione base di Drupal (indicata nel nome del file) già modificata per l'utilizzo di SQLite.
Scaricate il file e scompattatelo nella cartella radice del vostro sito.
Ora aprite con il browser il file install.php e seguite le istruzioni. - File .patch
Dato che l'applicazione di file .patch su Windows non è proprio immediata, questa versione è dedicata agli utenti Linux esperti (ma anche Windows ovviamente).
Scaricate il .patch file della versione Drupal che state per modificare, quindi applicate la patch al source-tree.
Ora aprite con il browser il file install.php e seguite le istruzioni, ricordando di:
- selezionare il profilo Drupal-SQLite nella prima pagina, in modo da avere una configurazione ottimizzata
- scegliere sqlite come "database type" nel blocco "basic options" della pagina successiva (purtroppo non c'è modo di forzare questa scelta attraverso il profilo)
Note di sicurezza
Il vostro database è ora un singolo file, per default sites/default/*.s3db.
Dovreste proteggere l'accesso a questo tipo di files per evitarne il download diretto.
Drupal-SQLite ha già preconfigurato nella cartella "sites/default" un file .htaccess per Apache che nega l'accesso a tutti i file *.s3db.
Se usate un file diverso oppure se non usate Apache, per favore proteggete questo fali dall'accesso esterno.
Moduli base
Drupal-SQLite fornisce un profilo di installazione (la prima pagina che appare durante l'install) che disabilita alcuni moduli base per funzionare più velocemente e ridurre il carico sul DB.
Questi moduli sono, ad esempio, dblog and syslog.
I moduli abilitati di default sono: 'color', 'comment', 'help', 'menu', 'taxonomy' e 'sqlitetools'.
Modulo sqlitetools
Dato che il database è ora un file singolo, è molto semplice farne un backup/restore tramite un semplice copia/incolla.
Per Drupal-SQLite ho creato il modulo sqlitetools (disponibile nell'area download) che permette di fare il backup del database corrente in un file ZIP e viceversa per il restore.
Sqlitetools permette inoltre di eseguire una pulizia del database (VACUUM) per liberare lo spazio inutilizzato.
Altri moduli aggiuntivi
Come detto Drupal-SQLite è una patch "non invasiva" a Drupal; per questo motivo dovrebbe funzionare correttamente con qualsiasi modulo che acceda al database tramite le funzioni di Drupal.
In alcuni casi particolari gli sviluppatori di moduli devono ricorrere a query SQL specifiche per il tipo di database attivo; per fare ciò solitamente includono un costrutto switch
nel loro codice, come questo (dal modulo xmlsitemap):
switch ($GLOBALS['db_type']) { case 'mysql': case 'mysqli': $query .= "LEFT JOIN {url_alias} ua ON ua.src = ('node/' || '%d')"; break; case 'pgsql': $query .= "LEFT JOIN {url_alias} ua ON ua.src = CONCAT('node/', CAST(%d AS VARCHAR))"; break; }
Come potete vedere una parte della query è composta diversamente in base al tipo di database attivo e, peggio ancora, non esiste un caso "default:
" che metta almeno un errore nella pagina. Nel nostro caso $GLOBALS['db_type'] == 'sqlite'
, quindi nessun codice è eseguito e la query risulta essere incompleta.
Nell'esempio la soluzione è semplice:
switch ($GLOBALS['db_type']) { case 'mysql': case 'mysqli': case 'sqlite': $query .= "LEFT JOIN {url_alias} ua ON ua.src = ('node/' || '%d')"; break; case 'pgsql': $query .= "LEFT JOIN {url_alias} ua ON ua.src = CONCAT('node/', CAST(%d AS VARCHAR))"; break; }
Come vedete il codice SQL è lo stesso di MySQL.
Il mio suggerimento è: prima di installare un modulo, cercate nei suoi sorgenti (grep per gli amici Linuxiani) la stringa 'mysql'
o 'pgsql'
e verificate che si tratti di un costrutto switch
.
Se lo trovate, esaminate il codice e cercate di sistemarlo in modo che funzioni anche con SQLite; altrimenti mandate una segnalazione agli sviluppatori del modulo stesso.
Ok ok, so che potrebbero rispondervi che SQLite non è un database supportato (lo farei anche io ;) ), ma in molti casi il fix è molto semplice e si riduce a qualche riga.
Elenco moduli funzionanti
Per comodità ecco una lista di moduli dei quali posso confermare il funzionamento senza modifiche (molti di loro sono in uso in questo sito).
Se avete provato qualche modulo non listato, mandatemi il nome e la versione e li includerò in questa lista.
Modulo | Versione | Note |
admin_menu | 6.x-1.3 | |
blockquote | 6.x-1.0 | |
captcha | 6.x-1.0 | |
cck | 6.4-2.4 | |
comment_notify | 6.x-1.2 | |
devel | 6.x-1.17 | (vedi questo commento) |
dhtml_menu | 6.x-3.4 | |
fckeditor | 6.x-2.0-alpha5 | |
geshifilter | 6.x-1.2 | |
languageicons | 6.x-1.1 | |
pathauto | 6.x-2.x-dev | |
permalink | 6.x-1.1 | |
poormanscron | 6.x-1.0 | |
potx (Translation Template Extractor) | 6.x-3.0 | |
service_links | 6.x-1.0 | |
taxonomy_dhtml | 6.x-1.0-rc3 | |
token | 6.x-1.11 | |
wysiwyg | 6.x-2.0 | + FCKeditor 2.6.4.1 |
Moduli non funzionanti
I moduli seguenti non funzionano immediatamente ma richiedono delle modifiche al codice.
Queste modifiche possono interessare poche linee (rilevanza=1) fino ad una importante riscrittura del modulo (rilevanza=5).
Modulo | Versione | Relevanza patch |
date | 6.x-2.3 | 5 |
Contributi e ringraziamenti
- Guida all'installazione di Drupal-SQLite su Altervista (di Roberto Capuzzo, aka robocap)
Guida pratica passo passo, completa di screenshots, per l'installazione di un sito Drupal-SQLite su spazio web Altervista.
(ringrazio l'autore sia per la guida che per il permesso di pubblicarla) - Dmitri Schamschurko
Grande aiuto nel debugging ed ottimizzazione nelle funzioni di modifica tabelle SQLite in database.sqlite.inc.
Questo lavoro ha permesso il supporto del modulo CCK in Drupal-SQLite-6.13-1.2
Drupal-SQLite-6.25-1.5, 2012-02-29
- Drupal official version 6.25 (see http://drupal.org/node/1461656)
Drupal-SQLite-6.24-1.5, 2012-02-03
- Drupal official version 6.24 (see http://drupal.org/node/1425094)
Drupal-SQLite-6.22-1.5, 2011-06-02
- Drupal official version 6.24 (see http://drupal.org/node/1168950)
Drupal-SQLite-6.20-1.5, 2010-12-16
- Drupal official version 6.20
Drupal-SQLite-6.19-1.5, 2010-08-12
- Drupal official version 6.19
Includes SECURITY FIXES from Drupal 6.18 (see http://drupal.org/node/880476)
Includes bug fixes from Drupal 6.19 (see http://drupal.org/drupal-6.19)
Drupal-SQLite-6.17-1.5, 2010-06-03
- Drupal official version 6.17
Drupal-SQLite-6.16-1.5, 2010-03-05
- Drupal official version 6.16
This release fixes security vulnerabilities.
Sites are urged to upgrade immediately after reading the official security announcement:
http://drupal.org/drupal-6.16
Drupal-SQLite-6.15-1.5, 2010-01-07
- Drupal official version 6.15
- Optimized query rewriting by adding shortcut returns after a successful rewrite.
- New core rewrite rule for cache and update modules ("TRUNCATE TABLE" SQL commands).
- Fixed an error during setup that causes install.php not use the values of "Site Name" and "Administrator username" fields. The default values were used instead.
Drupal-SQLite-6.14-1.4, 2009-10-04
- Drupal official version 6.14
- New query rewriting system: it allows Drupal-SQLite to rewrite SQL queries just before their execution, without the needing to patch (core) modules.
Rewrite rules are contained into two new files:- database.sqlite.core-patches.inc
this file is mantained by CoolSoft and will include rewrite rules for core modules and for widely used ones ;) (like devel) - database.sqlite.user-patches.inc (optional)
here you could add rewrite rules for all other modules
- database.sqlite.core-patches.inc
- Drupal DB functions "db_add_unique_key" and "db_remove_unique_key" are now supported.
- Workaround for SQLite not returning short column names for queries with JOIN or GROUP BY clauses.
- Added support for SQL function STDDEV (thanks again Dmitri)
Drupal-SQLite-6.13-1.3, 2009-08-06
- Fixed a bug in _db_query function which caused multiple/nested queries to fail.
Drupal-SQLite-6.13-1.2, 2009-07-15
- Bug fixing and code cleanup in SQLite table schema management functions: db_column_exists, db_create_table_sql, _db_create_index_sql, _db_alterTable, _db_introspectSchema.
Thanks to Dmitri Schamschurko for his great help and feedback. - CCK module (cck-6.4-2.4) now works with Drupal-SQLite.
Drupal-SQLite-6.13-1.1, 2009-07-02
- Drupal official version 6.13, see here for detailed changes
Drupal-SQLite-6.12-1.1, 2009-05-14
- Drupal official version 6.12
Drupal-SQLite-6.11-1.1.1, 2009-05-09
This is only a repackage of the previous archive version, due to missing folders in drupal-sqlite-6.11-1.1.zip file.
Missing folders were:
- /modules/color/images
- /sites
- /themes/garland/images
I'm sorry for that <:)
Drupal-SQLite-6.11-1.1, 2009-05-05
- Drupal official version 6.11
- Increased length of database name field (which here is used as a path)
- Moved new 'sqlite' database type as first in install.inc, so it becomes the default selected during install
- The profile Drupal-SQLite now checks requirements during the install.
see: http://coolsoft.altervista.org/en/drupal-sqlite#comment-28 - Database file is now, by default, contained in a reserved folder.
SQLite needs RW access to both the database file and the containing folder.
see: http://coolsoft.altervista.org/en/drupal-sqlite#comment-40 - Install procedure will now create both the database and its folder, and test their permissions.
see: http://coolsoft.altervista.org/en/drupal-sqlite#comment-40 - Fixed usage of undeclared variables in includes/database.sqlite.inc
see: http://coolsoft.altervista.org/en/drupal-sqlite#comment-37
Drupal-SQLite-6.10-1.0, 2009-03-21
- Drupal official version 6.10
- First public release
Download
Drupal-SQLite è presente su SourceForge all'indirizzo:
http://sourceforge.net/projects/drupal-sqlite/
Le versioni di sviluppo sono accessbili tramite SVN, sempre su SourceForge, con il comando:
svn co https://drupal-sqlite.svn.sourceforge.net/svnroot/drupal-sqlite/trunk drupal-sqlite
drupal-sqlite-6.25-1.5.tar.gz | |||
Descrizione | Fully patched version (compressed TAR archive) | ||
Release date | 2012-Feb-29 | Dimensione | 1,082,929 bytes |
MD5 | 6bec33f490823b60e928e6a7900a5b16 | ||
SHA1 | db7c79203c0ab277356863cbd551646ecefaf7fb | ||
SHA256 | 63f4c6710cc3fd87458862a879520935c4087365cb181838943f876f28593caa | ||
Open virus check report |
drupal-sqlite-6.25-1.5.zip | |||
Descrizione | Fully patched version (compressed ZIP archive) | ||
Release date | 2012-Feb-29 | Dimensione | 1,280,368 bytes |
MD5 | ab988f79fcc70682c111fedcd06c598d | ||
SHA1 | 080b96b249ae57924feff73741b816c42a1bc07d | ||
SHA256 | 1df6ccd3bb4fc69cc638ecdd1dffaf090dead3d48e0bb30359051db01d9939df | ||
Open virus check report |
drupal-sqlite-6.25-1.5.diff | |||
Descrizione | Patch file for Drupal sources | ||
Release date | 2012-Feb-29 | Dimensione | 72,496 bytes |
MD5 | 6fff775f01125f3a206a32b99e4b9447 | ||
SHA1 | 944fe43f9f9e0376d2c5714525bc9f41b8ec62da | ||
SHA256 | 7d61d8c6aaa832b5fa19013216c62c0b0d45b59deda14b3cf174e577a3e545e1 | ||
Open virus check report |
sqlitetools-6.x-1.1.tar.gz | |||
Descrizione | sqlitetools module (compressed TAR archive) | ||
Release date | 2009-Maggio-05 | Dimensione | 54,803 bytes |
MD5 | 5f6ef9d960a8e3d8a7e39ea8034c64cb | ||
SHA1 | 1f5244d040a8cad02d95cde7389b918ab6887640 | ||
SHA256 | 67fddb3e965fb62a887e7da697ae6f6e79d1d3668f8b4fb99eb48afb62d8e804 | ||
Open virus check report |
sqlitetools-6.x-1.1.zip | |||
Descrizione | sqlitetools module (compressed ZIP archive) | ||
Release date | 2009-Maggio-05 | Dimensione | 56,937 bytes |
MD5 | 92b61dad1c29e4700526435c90bcb04f | ||
SHA1 | 7eb1867f2f8cc4692e20e6ef558f087fd2cfe459 | ||
SHA256 | 9dffc2fe97d18d63614dd6659866de471b1f9528a94d1c514ddd957373aa77c6 | ||
Open virus check report |
Installazione_Drupal-SQLite_su_Altervista.pdf | |||
Descrizione | Istruzioni per linstallazione su www.altervista.org | ||
Release date | 2009-Lug-16 | Dimensione | 173,765 bytes |
MD5 | fcad99e64318d1826917fe1f2c3ad779 | ||
SHA1 | b3a0c82ca37399ee09d6d508963564beedfb1da4 | ||
SHA256 | 5d6d36cdd580a10957c17fa66108635f372dc4c77aeaa444a7426999f63279cd | ||
Open virus check report |
Navigazione
Login
Clicca qui per supportare il mio lavoro con PayPal
oppure offrimi un caffè
Commenti
Pagine
Missing field name
Hi Vincenzo,
it seems something is going wrong while compisong the subquery used to count records (line 771 of file view.inc).
The command "SELECT AS created_year_month..." should be something like "SELECT xyz AS created_year_month...", where xyz is the needed table field name.
Look if there's some switch PHP statement that set this field name; maybe they're not taking 'sqlite' database into account.
Can't find any solution for the views' module
Hi Claudio, I opened the view.inc file in notepad++ and looked for any "switch php statement". I found just one: switch($option) But I think this is not the query variable. I don't understand what to change in this file... Any suggestions?
Views module, I'm going crazy!
Hi all,
I tryed to find a solution to the problem I met with the views module and, in particular, with the view called "monthly archive"...
But I am just going crazy!
As Claudio sayd the problem is in the building of the SQL query. But it's really hard for me to find how this query is built (there are lots of variables, lots of objects, lots of arrays, lots of functions....It's terrible!).
I don't understand anything!
And I am just going crazy, really crazy!
The problem is that I need to use this module very much in my site,!
At this point, unfortunately, I think I have to destroy all the work I have done because of views' problems...
Is it possible that anyone have never used the "monthly archive" view with drupal sqlite?
Is it possible that anyone have never patched this module to work with this version of drupal?
I would be interested in doing it, but I really don't know how to do it...
Please help me!
Simple Node archive
I have same requirement in one of my project in need to create archive blocks of diffrent node type and i didn't find any module. Now we have sandbox module availabe for archives in both 6.x and 7.x.
You can test this sandbox module - http://drupal.org/sandbox/asiq.khan/1213302
privatemsg
Non funziona il modulo privatemsg, cosa posso fare per farlo funzionare?
Non conosco il modulo in
Non conosco il modulo in questione; l'unica cosa che posso consigliarti è verificarne il codice PHP.
Prendi spunto dai suggerimenti che trovi al paragrafo "Altri moduli aggiuntivi"...
sqlite .journal files and db file under 4mb
hello,
i have white pages every time db is under 4mb filesize
3 sites in diffrent host has the same problem
any help?
tnx
is this wordpress ?
is this wordpress ?
No
As you can see in footer this is Drupal-SQLite (Drupal 6 + my SQLite patch)
Pagine