Adatbázis: SQL, XML DB

Postgres restore más role-al

Sziasztok!

Az alábbi problémára szeretnék megoldást találni:
Van egy postgres 8.2 adatbázisom. Ezt pgadminIII-al kidumpolom, majd szeretném egy _másik_ ugyanezen a szerveren futó adatbázisba beletenni.

A cél, hogy a teszt adatbázist feltöltsem a produktív rendszer adataival.

A gond az, hogy mivel a prod adatbázisnak a prod_role, a teszt adatbázisnak a test_role a tulajdonosa, a prod-ról készített dump elszáll, ha a test-re akarom visszaállítani.

Keresgéltem már, de nem igazán találtam értékelhető megoldást.

Köszi a segítséget előre is!
pentike

sql segítség lekérdezéshez

Lehet én néztem be nagyon valamit, de megpróbálol elmondani egyszerűen.
Vagy adatbázik a lekérdezés számára fontos táblákkal.
user_menu (user_id,menu_id) - melyik user melyik menühöz van rendelve
menu (id,menu_group_id) - melyik menü melyik menücsoporban van
menu_group (id,name,...) - a menücsoportok
user_group(menu_id,group_id) - melyik csoporthoz milyen menük tartoznak
own_group(user_id,group_id) - melyik user melyik csoporthoz van rendelve

kb ennyi lenne ami fontos a dologban, hogy elmondhassam
szeretném megtudni, hogy hány menu_group található egy user adott alatt.

A lekérdezés így néz ki:

select menu_group.* from user_menu,menu,menu_group,user_group,own_group where menu_group.id=menu.menu_group_id and (user_menu.menu_id=menu.id or user_group=menu.id) and own_group.group_id=user_group.group_id) and owen_group.user_id=2 and user_menu.user_id=2 group by menu_group.id

lehetnek egyes user_id-nak saját menüjük és a csoporban lévő menükhöz is hozzáférhetnek, aminek tagjuk, így a kapott menülista alapján elméletileg kijönne hogy az adott menük milyen menücsoporban vannak, és magkapnám, hogy adott user hány menücsoporthoz tartozik és melyek ezek.

A gondom az, hogy a user egy csoporthoz sem tartozik, viszok vannak saját menüi, akkor üres eredményt kapok, ha akár 1 csoporjoz is tartozik, márik megkapom az összes eredményt.

Kérlek segítsetek egy helyes select megadásában.

mysql-log-rotate

Kedves fórum társak,

mysql szervert használok (5.0.51.-et) Solaris 10-en, a logolás használom (kell), meg van adva a my.cnf ben a

expire_logs_days=5 (Ez hatástalan beállítás és ha jól értem akkor csak a bináris logra működik)
log=mysql.log

a logfile mérete kb 2 hét alatt 40G -re hízik, van egy saját log rotate scriptje a mysqlnek :

# This logname can be set in /etc/my.cnf
# by setting the variable "err-log"
# in the [safe_mysqld] section as follows:
#
# [safe_mysqld]
# err-log=/var/db/mysql/mysqld.log
#
# If the root user has a password you have to create a
# /root/.my.cnf configuration file with the following
# content:
#
# [mysqladmin]
# password =
# user= root
#
# where "" is the password.
#
# ATTENTION: This /root/.my.cnf should be readable ONLY
# for root !

/var/db/mysql/mysqld.log {
# create 600 mysql mysql
notifempty
daily
rotate 3
missingok
compress
postrotate
# just if mysqld is really running
if test -x /usr/local/bin/mysqladmin && \
/usr/local/bin/mysqladmin ping &>/dev/null
then
/usr/local/bin/mysqladmin flush-logs
fi
endscript
}

amit szeretnék beüzemelni, hátha meg lehet oldani szebben is a mysql logrotálást mint saját scriptből mysqld leállítás nélkül is, van valaki aki beüzemelte már a fenti mysql-log-rotate scriptet?

MySQL ROLLBACK konkurens műveleteknél?

Azzal a problémával futottam össze, hogy webes környezetben 1 DBuser alatt fut minden felhasználó adatbázis művelete.
Ez önmagában még nem jelent gondot, viszont ha van egy műveletsorom amit egy menet közbeni megszakadás miatt rollbackelnem kellene, egy másik (webes)user konkurrens műveletének commitja miatt ezt már nem tudom megtenni.

A műveletsort nem tudom pl tárolt eljárásként egységbe szervezni, mert tömböt, pláne többdimenziósat a mysql nem tud inputként bevenni, a workaround(egybefűzöm, majd a SP-n belül szétbontom a delimiter jelek mentén) meg egy méret felett már nem megoldható. Szóval kénytelen vagyok a tömböt az sql-en kívül bejárni, az pedig iterációhoz vezet.

Van-e valamilyen ötletetek a szituációra, ami nem jár a tábla lockolásával(ami a konkurens juzerek munkáját blokkolja), illetve nem vezet be minden webes usernek egy DBusert (ami megszívatja az adminisztrációt)?

Előre is köszönöm!

PL/pgSQL fv.

Sziasztok!

Egy PL/pgSQL függvényt próbálok írni, de eddig sajnos kevés sikerrel.

Az eredeti táblák több mezőt tartalmaznak, a problémát egyszerűsítve fogalmazom meg.

Adottak a T1, T2 és T3 táblák, melyek sémája különböző. Valamint van egy T tábla, melyben a Tn (n=1,2,3) táblák rekordjainak egy sorozata van tárolva (nem minden rekord szerepel benne, egy rekord többször is előfordulhat).
A T sémája:
id (primary key)
t (melyik Tn táblában van a rekord)
t_id (a rekord Tn táblabeli azonosítója)
elozo (az előző rekord T.id-je a sorozatban, első rekordnál 0)

Ebből szeretném lekérdezni a Tn táblabeli rekordokat a T táblában meghatározott sorrendben.

PL/pgSQL nélkül csak több query küldésével tudtam megoldani, ami nem szép:
1. lekérdezem a T-ből azt a rekordot, melyre az elozo=0
2. T.t táblából T.t_id-jű rekord lekérdezése (elágazás)
3. elozo=T.elozo; goto 1
Vége ha az 1. pontban szereplő lekérdezés eredménye üres.

Ezt szeretném egy PL/pgSQL függvénnyel helyettesíteni.
Cursor használatával próbáltam megoldani de nem sikerült.

Van javaslatotok arra, hogy a fenti táblaszerkezettel hogyan lehet ezt a lekérdezést szépen és hatékonyan megírni?

Előre is köszönöm a válaszokat!

Mysql lekérdezés

Sziasztok!

Egy olyan gondom van, hogy adott egy webáruház. Lehetőség van arra, hogy a kiválasztott kategóriákat bizonyos feltétel szerint rendezzzük. Az egyik ilyen feltétel, hogy "Az akciós termékek elől".
Ezt szeretném megoldani valahogyan, hogy az akciós termékek elől legyenek értékük szerint növekvőben majd utána a maradék termék pl. ABC sorrendben.
Ezt meg lehet oldani egy lekérdezésben?

Debian mysqldump: table crashed

Hello!

Egy debian szerveren a mysqldump az alábbi hibát dobja:

mysqldump: Error 1194: Table 'tablaneve' is marked as crashed and should be repaired when dumping table `tablaneve` at row: 33

Mindeközben a készült dump, és az illető tábla is hibátlan.

Nyomtam már rá REPAIR TABLE-t, látszólag hibátlanul lefutott, de továbbra is hibajelzést ad. Próbáltam kidumpolni a táblát, majd törölni, és visszarakni dump-ból, ennek ellenére még mindig megvan a hibajelzés. Mi okozhatja ezt?

Petya

[Megoldva] MySQL syntax error SELECT-nél

Sziasztok!

Ezt a hibaüzenetet kaptam egy lekérdezéskor:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 'username')' at line 2

A hibát ez a két sor okozza:

$sql = "select felh_nev from felhasznalok where felh_nev=\'$nev\' ";
$eredmeny = mysql_query($sql, $ossz) or die (mysql_error());

Kipróbáltam többféle módon a szintaxist, aposztrófokkal, idézőjelekkel (ilyenkor adta ezt a hibát), és azok nélkül is, akkor egy másik hibaüzenet jött.
phpMyAdmin-ban kiadva ezt a lekérdezést, működött, PHP kódban nem jó.
Találkozott már valaki hasonló hibával? Mi okozhatja, hogyan lehet elhárítani?

Válaszaitokat előre is köszönöm.

mysql frissítési probléma noexec-es tmp miatt

A /tmp noexec-el van mountolva. Eddig ez a frissítések során nem okozott semmi gondot, de a ma reggel futtatott apt-get upgrade az alábbiakat szólta:

Preconfiguring packages ...
Can't exec "/tmp/mysql-server-5.0.config.280121": Permission denied at /usr/share/perl/5.8/IPC/Open3.pm line 168.
open2: exec of /tmp/mysql-server-5.0.config.280121 configure 5.0.32-7etch5 failed at /usr/share/perl5/Debconf/ConfModule.pm line 58
mysql-server-5.0 failed to preconfigure, with exit status 9
(Reading database ... 27825 files and directories currently installed.)
Preparing to replace mysql-common 5.0.32-7etch5 (using .../mysql-common_5.0.32-7etch6_all.deb) ...
Unpacking replacement mysql-common ...
Preparing to replace libmysqlclient15off 5.0.32-7etch5 (using .../libmysqlclient15off_5.0.32-7etch6_amd64.deb) ...
Unpacking replacement libmysqlclient15off ...
Preparing to replace mysql-client-5.0 5.0.32-7etch5 (using .../mysql-client-5.0_5.0.32-7etch6_amd64.deb) ...
Unpacking replacement mysql-client-5.0 ...
Setting up mysql-common (5.0.32-7etch6) ...
(Reading database ... 27825 files and directories currently installed.)
Preparing to replace mysql-server-5.0 5.0.32-7etch5 (using .../mysql-server-5.0_5.0.32-7etch6_amd64.deb) ...
Stopping MySQL database server: mysqld failed!
invoke-rc.d: initscript mysql, action "stop" failed.
dpkg: warning - old pre-removal script returned error exit status 1
dpkg - trying script from the new package instead ...
Stopping MySQL database server: mysqld failed!
invoke-rc.d: initscript mysql, action "stop" failed.
dpkg: error processing /var/cache/apt/archives/mysql-server-5.0_5.0.32-7etch6_amd64.deb (--unpack):
subprocess new pre-removal script returned error exit status 1
Stopping MySQL database server: mysqld failed!
invoke-rc.d: initscript mysql, action "stop" failed.
Starting MySQL database server: mysqld already running.
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
Preparing to replace libgd2-xpm 2.0.33-5.2 (using .../libgd2-xpm_2.0.33-5.2etch1_amd64.deb) ...
Unpacking replacement libgd2-xpm ...
Errors were encountered while processing:
/var/cache/apt/archives/mysql-server-5.0_5.0.32-7etch6_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

A lényeg a 2. sor ("Can't exec....."), amiből kiderül, hogy mi volt a baja. A mysql úgy tűnik fut és a site-ok működnek.

Ha most nyomok egy apt-get upgrade -s -t, akkor ez van:

apt-get upgrade -s
Reading package lists... Done
Building dependency tree... Done
The following packages will be upgraded:
mysql-server-5.0
1 upgraded, 0 newly installed, 0 to remove.
3 not fully installed or removed.
Inst mysql-server-5.0 [5.0.32-7etch5] (5.0.32-7etch6 Debian-Security:4.0/stable)
Conf libgd2-xpm (2.0.33-5.2etch1 Debian-Security:4.0/stable)
Conf libmysqlclient15off (5.0.32-7etch6 Debian-Security:4.0/stable)
Conf mysql-client-5.0 (5.0.32-7etch6 Debian-Security:4.0/stable)
Conf mysql-server-5.0 (5.0.32-7etch6 Debian-Security:4.0/stable)

Tehát elvileg nem murdelt meg semmi, de honnan lehet kideríteni, hogy a mysql tényleg túlélte-e a mókát és hogy milyen állapotban van egy ilyen félresikerült frissítés után?

SQL probléma az extra.hu-n

Üdvözlet!

Valakinek sikerült már csatlakozni az extra.hu sql-jéhez?
Én már egy ideje rosszul vagyok, és az agyvérzés szélén állok.
Aktiváltam a szolgáltatást az oldalon, és a felhasználó.extra.sql oldalra probálok belépni SQL Developerrel meg CocoaSQL-el is,
és egyikkel sem enged be!
Valaki tudna segíteni?
Nagyon megköszönném!

Üdv!