PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : verschiedene Datenbankprobleme


anakin87
2009-05-26, 18:29:12
Hello,
im zuge meiner bachelorarbeit hab ich mit verschiedenen datenbanken zu tun
(oracle,postgresql,mysql,mssql,...)

nun bin ich bei einem punkt wo ich nicht weiter weiß
1. ich kann per client nicht übers netzwerk auf die postgres datenbank zugreifen
(connection refused)
der client ist navicat lite for postgres (benötigt host, port, datenbank, user, passwort ) //vorschläge für bessere clients werden noch angenommen
die datenbank läuf auf einem debian
netstat -a zeigt mir an das der dienst im listening mode ist
cat /etc/services sagt mit das die ports auch passen
dann hab ich in der pg_hba.conf

....
#Type Database User Adress Method
host all all 192.168.0.0/32 trust

klar is trust nicht die lösung aber ich kann dann später eh auf md5 wechseln


2. bei mysql hab ich mich an der FullTextSearch versucht
die funktioniert nur bedingt - genauer man kann dann per abfrage nur das erste wort in der indizierten spalte abfragen ??? warum
create table + fulltextindex hat funktioniert
aber ich kann halt nicht nach jedem wort suchen... warum??
code für mysql-table usw. kommt dann noch


so jede hilfe wird hier gerne angenommen :D

beste grüße

rotalever
2009-05-26, 18:43:53
Was ist denn deine IP-Adresse?

Gast
2009-05-26, 18:46:02
192.168.0.0/32
Ich kenn ProgreSQL überhaupt nicht, aber ich kann mir nicht vorstellen, dass das richtig ist.
/32 ist eine einzelne IP und .0.0 deutet auf das Netz hin, als IP selbst ist das eigentlich garnicht gültig

http://de.wikipedia.org/wiki/CIDR
Netmaske 255.255.0.0. wäre /16

samm
2009-05-26, 20:50:07
[QUOTE=anakin87;7323210]Hello,

dann hab ich in der pg_hba.conf

....
#Type Database User Adress Method
host all all 192.168.0.0/32 trust

Wie gesagt, das mit der /32 beschränkt dich auf genau diese IP, und die hast du garantiert nicht ;) Wenn du wirklich von einer 192.168....-Adresse her verbindest also im LAN eine entsprechende IP hast, und alle IPs in diesem Bereich zulassen willst, dann füge eine /16 hinzu, ansonsten deine genau IP mit einer /32.

Zudem solltest du trotzdem nochmal in der postres.conf überprüfen, worauf listen_address gesetzt ist. Nach Änderungen musst du postgres neu starten. Oh, und achte darauf, welches File du editierst, das im Cluster-Verzeichnis (u.U. $PGDATA) ist das, welches relevant ist.

anakin87
2009-05-27, 00:16:52
hey @ all
jep seh grad das es eigentlich 24 sein sollte.... werd es morgen gleich mal umschreiben
sry - ich war schon etwas codeblind

aber hat wer ne idee zur fulltextsearch in mySQL?
wenn nicht, dann kommt morgen der create code nach...

Hardwaretoaster
2009-05-27, 02:49:31
Hm, das mit mysql hört sich nach einem Standard-Prefix-Match an. Ich bin nicht so tief in mysql, aber vielleicht ist es einfach ein Fehler in der Syntax und das wurde ignoriert. oder mal suchen, ob es Leute gibt, die sich über die Funktion ausgelassen haben

anakin87
2009-05-27, 11:54:13
na ok das bei postgresql seh ich ein da gehört /24 statt /32 keine ahnung was ich da genommen hab wie ich auf die idee gekommen bin....
dummerweise verweigert mir der server immer noch die verbindung (auch nach /etc/init.d/postgres restart)
was muss ich tun um ne verbindung zu db herstellen - schritt für schritt
1.createuser postgresuser (superuser mit passwort)
2.freigeben des datenbankservers ins netzwerk (pg_hba.conf anpassen diesmal mit der richtigen netmask) sonst noch was?
3.netstat -a (service is up and listening)
4.im client einstellen (ServerIP, Port, User, Passwort, [Datenbank])
5.der client liefert nen fehler - "could not connect to server: connection refused (0x0000274D/10061)"


so nu nochmal zu mysql

create table Webside.Source
( ID int not null auto_increment primary key,
htmlSource text not null,
textOnly text not null,
url varchar(200) not null
) engine = myisam;


fulltext search

alter table webside.Source add fulltext(textOnly);


so was hab ich falsch gemacht dass die FULLTEXTSEARCH nur das erste wort pro zeile der indizierten spalte liefert?


select * from webside.Source where
match textOnly
against('testtext' in natural language mode);


das gesuchte wort kommt in den 4 datensätzen die die datenbank besitzt, nur in 2 vor
und es liefert nur den datensatz wo das suchwort am anfang steht...
bemerkung neben bei index wurde auch aktualisiert als alle 4 datensätze eingefügt wurden...
irgend eine idee?

beste grüße

Gast
2009-05-27, 15:20:08
zu mysql: was hast du für eine collation? wenn es eine _bin ist, dann wird zwischen gro/kleinschreibung unterschieden. außerdem musst du bei beim natural language mode (standard) auf die 50% regel aufpassen. die besagt, dass wenn ein suchgbegriff in >= 50% der datensätze vorkommtes ignoriert wird. hast du 4 datensätze, suchst das wort x welches in 2 datensätzen vorkommt, dann ist das ergebnis leer.
stattdessen müsstest du dann den boolean mode nehmen.

anakin87
2009-05-27, 18:58:14
zu mysql: was hast du für eine collation? wenn es eine _bin ist, dann wird zwischen gro/kleinschreibung unterschieden. außerdem musst du bei beim natural language mode (standard) auf die 50% regel aufpassen. die besagt, dass wenn ein suchgbegriff in >= 50% der datensätze vorkommtes ignoriert wird. hast du 4 datensätze, suchst das wort x welches in 2 datensätzen vorkommt, dann ist das ergebnis leer.
stattdessen müsstest du dann den boolean mode nehmen.

bitte was?
muss ich gleich mal testen...
aber thx auf die idee muss man mal erst kommen
da steht nicht zufällig was in der doku, oder?

eine frage noch wie sieht das bei mysql aus wenn ich ein insert/update/delete mache muss ich dann den index aktualisieren?

rotalever
2009-05-27, 20:02:05
na ok das bei postgresql seh ich ein da gehört /24 statt /32 keine ahnung was ich da genommen hab wie ich auf die idee gekommen bin....
dummerweise verweigert mir der server immer noch die verbindung (auch nach /etc/init.d/postgres restart)
was muss ich tun um ne verbindung zu db herstellen - schritt für schritt
1.createuser postgresuser (superuser mit passwort)
2.freigeben des datenbankservers ins netzwerk (pg_hba.conf anpassen diesmal mit der richtigen netmask) sonst noch was?
3.netstat -a (service is up and listening)
4.im client einstellen (ServerIP, Port, User, Passwort, [Datenbank])
5.der client liefert nen fehler - "could not connect to server: connection refused (0x0000274D/10061)"

Bekommst du denn mit dem Programm "psql" eine Verbindung als User oder auch Superuser? Was sagt der postgresql log zu dem Thema?

Sephiroth
2009-05-27, 20:49:48
bitte was?
muss ich gleich mal testen...
aber thx auf die idee muss man mal erst kommen
da steht nicht zufällig was in der doku, oder?

eine frage noch wie sieht das bei mysql aus wenn ich ein insert/update/delete mache muss ich dann den index aktualisieren?
jup, steht in der doku -> http://dev.mysql.com/doc/refman/5.1/en/fulltext-natural-language.html (deutsch (http://dev.mysql.com/doc/refman/5.1/de/fulltext-search.html))

die indizes brauchst du nicht aktualisieren

The_Invisible
2009-05-27, 20:51:55
eine frage noch wie sieht das bei mysql aus wenn ich ein insert/update/delete mache muss ich dann den index aktualisieren?

nö, wär ja auch irgendwie blöd oder?

mfg

anakin87
2009-05-28, 10:29:43
nö, wär ja auch irgendwie blöd oder?

mfg
naja bei oracle darfst du extra einen job dafür anlegen weil die macht das nicht von alleine

@psql-thema
jep local funkt die db wunderbar hab 2 user dafür und beide funken recht gut

kann das sein dass der listener auch extra eingestellt werden muss?
in der postgresql.conf hab ich den listener_addresses schon umgestellt auf '*' somit sollte der listener auf alle eingehenden reagieren

The_Invisible
2009-05-28, 11:49:58
naja, sonst stell mal explizit auf die adresse und/oder versuch per telnet ob du da mehr informationen bekommst. und natürlich die log selber durchschauen.

mfg

anakin87
2009-05-28, 11:54:05
gg
wenn man in der config was ändert sollte man auch den server neu starten^^
thx postgresql kann man jetzt übers netz auch ansteuern

@the_invisible is zwar OT aber was solls
kann man einem debian user empfehlen auf gentoo 64-bit umzusteigen? (betrifft mein notebook fujitsu siemens xi2550)
http://www.forum-3dcenter.org/vbulletin/showthread.php?t=456190

anakin87
2009-06-02, 21:01:40
push *gg*

sagt mal kann es sein das mysql bei der fulltext-search keine wildcards unterstützt?
weil das liefert mir keine ergebnisse.....

SELECT * FROM `Source` WHERE match text against('webs%')


hingegen das schon.....

SELECT * FROM `Source` WHERE match text against('webside')


beste grüße

Hucke
2009-06-02, 21:43:35
push *gg*

sagt mal kann es sein das mysql bei der fulltext-search keine wildcards unterstützt?
weil das liefert mir keine ergebnisse.....

SELECT * FROM `Source` WHERE match text against('webs%')


hingegen das schon.....

SELECT * FROM `Source` WHERE match text against('webside')


beste grüße

Versuchs mal mit SELECT * FROM <table> WHERE <field> like 'blah%'

Und ein schöner Client für mehrere Datenbanke ist DBVisualizer (http://www.minq.se/products/dbvis/). Auf JDBC Basis kann man da Verbindungen für alle möglichen Datenbanken einfügen. Sehr praktisch.

samm
2009-06-02, 21:56:51
Wenn es fulltext-search sein muss und das üblichere Vorgehen, das Hucke vorschlägt, nicht gewünscht ist: http://dev.mysql.com/doc/refman/5.1/de/fulltext-boolean.html
Offenbar ist % nicht als wildcard zu gebrauchen, dafür * mit der IN BOOLEAN MODE-Option.