DBeaver | Free Universal SQL Client

#16152

Oh bien !
Un client SQL qui gère tout un tas de SGBD.

C'est parfait à l'heure où le petit SQLite Browser est devenu une usine à gaz qui ne gère plus tout correctement.

http://dbeaver.jkiss.org/

How do I unlock a SQLite database? - Stack Overflow

#15872

Si en SQLite il vous arrive d’avoir une erreur disant que la BDD est verouillée (« General error: 5 database is locked »), c’est que vous avez sûrement manqué de fermer un curseur quelque part.

Vérifiez les fetch() et ajoutez un closeCursor() en dessous de votre boucle.

En PHP par exemple :

$req = $handle->query("SELECT * FROM table");
$data = $req->fetch();

Ajoutez ça à la suite :

$req->closeCursor();

Logique, mais quand on le sait pas on peut toujours chercher…
Les forums sont pleins de cette question spécifique, mais la plupart ont des hacks farfelues (relancer Apache, etc.) qui ne sont pas des solutions.

http://stackoverflow.com/questions/151026/how-do-i-unlock-a-sqlite-database

Note : si vous utilisez SQLite

#14931

Pensez à faire un VACUUM de temps en temps.

Vacuum c’est la commande SQL qui permet de nettoyer la base SQLite.

Par exemple, si vous insérez 500 entrées dans la BDD, le fichier .sqlite prend plus de place. Si maintenant vous virez 499 de ces entrées, le fichier .sqlite ne diminue pas en volume. L’espace est réservé par SQLite pour une utilisation future par SQLite.

En pratique, c’est mieux : SQLite n’aura plus à demander de la place au système de fichier, mais au bout d’un moment la taille du fichier peut-être trop grand par rapport aux données réelles qui sont dans la base.

Vacuum sert justement à reconstruire la base à partir de rien. Un peu comme une défragmentation des données.

Firefox aussi utilise SQLite pour stocker des choses (historique, cookies…). Pensez à appliquer ça une à deux fois par an : http://www.commentcamarche.net/faq/11807-compacter-les-bases-sqlite-de-firefox-3

http://lehollandaisvolant.net/?mode=links&id=20160401203858

Anton Titov’s blog » “Do not use ORDER BY RAND()” or “How to get random rows from table?”

#14785

C’est censé ce qu’il dit (mais ça ne fera pas sens) :

« Let’s say you run this query on a table with 10000 rows, than the SQL server generates 10000 random numbers, scans this numbers for the smallest one and gives you this row »

En gros : n’utilisez pas ORDER BY RAND() en SQL.
SQL va associer un nombre aléatoire, généré pour l’occasion, à chaque entrée de la table, et ensuite prendre le plus petit.
Il y a donc plusieurs opérations : la génération d’autant de nombres aléatoires que d’entrées dans la base, leur tri en ordre croissant et la réponse.

C’est écrit dans l’article, mais la solution à retenir est plutôt de lister le nombre d’entrées dans la base en SQL, générer un nombre aléatoire en PHP (ou dans le langage que vous utilisez) entre 0 et le nombre d’entrées, puis repasser en SQL et sortir l’entrée correspondant à ce nombre. Oui, ça fait deux requêtes, mais c’est beaucoup plus rapide quand même.

Idem pour N entrées : listez les ID des entrées en SQL, utilisez PHP (ou autre) pour en prendre N au hasard, puis utilisez SQL pour les sortir de la base.

En revanche, si votre base fait N entrées et que vous voulez mélanger ces N entrées, je ne vois pas d’inconvénients à utiliser RAND(). Je ne suis pas sûr qu’un array_shuffle() en PHP (ou équivalent) soit plus performant. Dans le cas présent, RAND() est prévu pour ça.

(Je n’ai pas de benchmarks par contre)

http://www.titov.net/2005/09/21/do-not-use-order-by-rand-or-how-to-get-random-rows-from-table/

MySQL to Sqlite converter - Liens éclairs

#14609

/coude.

Sinon j’ai deux cas de code SQL qui ne fonctionnaient pas pareil dans SQLite et MySQL (ça peut avoir évolué depuis) :

AUTO_INCREMENT : MySQL a besoin de ça lors de la création d’une table, sur l’ID. SQLite ne connaît pas.
IF NOT EXISTS : lors de la création d’une table (évite de créer deux fois la même table). SQLite ne connaît pas.

ÉDIT : Thibaut me signale que SQLite supporte maintenant les deux syntaxes ci-dessus.

phpLiteAdmin | An SQLite database management tool

#14485

Un équivalent de PhpMyAdmin pour SQLite.

Perso j’utilise le logiciel SQLiteBrowser pour ouvrir à la main mes fichiers SQLite. Il est plus rustique et semble moins puissant, mais on peut lancer des requêtes SQL dessus, ce qui me suffit.

(via)

https://www.phpliteadmin.org/

Cinq raisons d'utiliser SQLite en 2016

#14228

Le mode WAL de la version 3.7 à l’air intéressant : il permet simultanément des lectures et des écritures (alors qu’avant, une écriture était bloquante pour toute autre opération).

Pour un blog, les écritures sont moins probablement moins de 1% des accès (et pour ceux là, un bon vieux cache HTML/Json suffit dans 99% du 1% des cas), donc ça ne se verra pas forcément, mais ailleurs…

Voir aussi l’article d’origine : http://charlesleifer.com/blog/five-reasons-you-should-use-sqlite-in-2016/

http://www.developpez.com/actu/94614/Cinq-raisons-d-utiliser-SQLite-en-2016/

SqliteBlog | Accueil

#13892

Le service précédemment sur blogotext.tk reprend sur sqliteblog.fr.
Il est plus large et propose plusieurs moteurs de blog sous SQLite.

Pour avoir une blog, il suffit d’en faire la demande sur le forum en suivant le modèle.

C’est marrant, ça me fait penser à Webou.net (l’hébergeur sur lequel j’ai commencé), un petit site d’hébergement gratuit pour débuter. Devenu Webou-Pro depuis.