Portál AbcLinuxu, 10. listopadu 2025 01:43
Řešení dotazu:
CREATE TABLE uzivatel(nick text);
INSERT INTO uzivatel values ('Wall');
INSERT INTO uzivatel values ('wall');
INSERT INTO uzivatel values ('WaLl');
INSERT INTO uzivatel values ('Wal');
INSERT INTO uzivatel values ('wal');
INSERT INTO uzivatel values ('wAl');
SELECT * FROM uzivatel WHERE nick ILIKE 'wal';
ILIKE lze použít i operátor ~~*
CREATE EXTENSION "citext";
CREATE EXTENSION "citext";?
su su postgres psql vasedb CREATE EXTENSION "citext";Postgres neběží s právy roota jelikož by to bylo bezpečnostní riziko - takže má vlastního "roota" čímž je uživatel Postgres. Původně jsem to tady nechtěl vytahovat, ale možná by Vám pomohlo školení - 23. října - PostgreSQL efektivne - Základní administrace PostgreSQL, vysvětlení základních funkcí PostgreSQL ovlivňujících chování MVCC, TOAST - cílem školení je vysvětlit nejdůležitější funkce PostgreSQL, tak aby účastník školení dokázal efektivně nasadit a provozovat PostgreSQL (ROOT). Školím pro iinfo.
postgres=# create database nova_database encoding 'utf8' owner hunt;
CREATE DATABASE
postgres=# CREATE EXTENSION "citext";
CREATE EXTENSION
postgres=#
a pak jsem se přihlásil na hunt a chtěl jsem udělat
nick_uzivatele CITEXT UNIQUE not null,
což by měl bejt stejnej postup ne? Nebo já už nevim, začínám toužit po MySQL.
psql postgres postgres=# create database nova_database encoding 'utf8' owner hunt; CREATE DATABASE --- prepnout se do cilove db \c nova_database CREATE EXTENSION "citext"; CREATE EXTENSIONJakmile se v pg rozkoukáte, tak to je v pohodě - úplně nejhorší na Postgresu je, že to nemá stejné ovládání jako MySQL. Jak vidím, měl bych do článku http://postgres.cz/wiki/P%C5%99echod_z_MySQL přidat ještě část o case sensitivity
SMALLINT unsigned nebo i INT unsigned a nechci databázi velkou jak kráva( rýpu?), štve mě to a už několikrát jsem byl nešťastný, že se mi DB sakramentsky zvětšila (bo právě proto byly použity 2^16 a 2^32 datové typy, bo to je pro aplikaci platný rozsah).CREATE TABLE tx ( x SMALLINT, PRIMARY KEY (x)); INSERT INTO tx (x) VALUES(32767); SELECT x*2 AS val FROM tx;To jsou tři věci, které jsem tam nenašel, a které mě při migraci často zabolí (pominu-li, že mysql akceptuje INSERT bez INTO líní lidé jsou…).
GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
[, ...] | ALL [ PRIVILEGES ] }
ON { [ TABLE ] table_name [, ...]
| ALL TABLES IN SCHEMA schema_name [, ...] }
TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]
GRANT SELECT ON ALL TABLES IN SCHEMA xxxx TO GROUP nejaka_grupa
případně:
do $$
declare users text[] = ARRAY['pavel','postgres'];
u varchar; r record;
begin
for r in
select *
from information_schema.tables
where table_schema = 'public'
loop
for u in select * from unnest(users)
loop
execute format('grant select on %I.%I to %I', r.table_schema, r.table_name, u);
end loop;
end loop;
end;$$ ;
Kdybych z nějakého důvodu nemohl použít skupiny (třeba z vlastní lenosti).
99% z MySQL lze do Pg nějak převést - to 1 procento nejde - v několika málo ohledech tyhle dvě databáze mají úplně jinou filozofii, jiná řešení a měly (a mají) jiné priority vývoje.
Myslel jsem aby jsi to doplnil na wiki, bo to jsou věci, s kterými se přechodník setká a potrápí jej 
Ad. unsigned - dík, zajímavé řešení, ale jen pro situace kdy tabulka obsahuje velké rozpětí hodnot (tedy spíše spoustu malých a pár velkých) jinak je to nastejno jak užití vyššího datového typu nebo je to o kus horší (už 15bits ve 4B blééé)…
Ad. Vím - jsem to musel už řešit několikrát, stojí za zmínku i ALTER DEFAULT PRIVILEGES IN SCHEMA… - což je už konečně to co je „třeba“ :), ale chtěl jsem napsat verzi < 9 (, ale nějak se mi pomíchali > <
), člověku dělající v MySQL to přijde velmi neohrabané a je zmaten - obdobnou fci používám, jen má nevýhodu, že po každém doplnění tabulek, se nesmí zapomenout ji použít.
Ad. případ (třešnička) implicitního ne-přetypování na vyšší typ, tak na to spousta „obyčejných“ lidí co dělali jen s MySQL čučí jak čáp do trubky…
Ju. Aby jsme si rozuměli, nechtěl jsem rozbíhat nic ve smyslu MySql vs. PostgreSql a obhajobu či hanění řešení. Jen když jsi zmínil doplnění wiki, já si ji přečetl, tak jsem navrhl doplnit další rozdíly, které považuji za důležité.
Přiznávám, že absence unsigned nedokážu brát s nadhledem a jsem schopen/ochoten flejmovat na toto téma
.
, ale zesmolím a pošlu, řekněme do týdne…
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.