VVoVe: ehi gente, ho un problemino con mysql.
ho letto il manuale, ma all'errore 1210 mi dice
Codice PHP:
Error: 1210 SQLSTATE: HY000 (ER_WRONG_ARGUMENTS) Message: Incorrect arguments to %s
VVoVe:
che vuol dire??
VVoVe: ehi gente, ho un problemino con mysql.
ho letto il manuale, ma all'errore 1210 mi dice
Codice PHP:
Error: 1210 SQLSTATE: HY000 (ER_WRONG_ARGUMENTS) Message: Incorrect arguments to %s
VVoVe:
che vuol dire??
Vuol dire che hai un argomento errato nella cosa che hai fatto....
hai forse mysql 4.1??? Dire l'errore senza dire quel che fai, equivale a dare una risposta e far indovinare la domanda.
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
MySQL 3.23.56 in esecuzione su localhost ....
ho fatto una query con MATCH .. AGAINST su 2 campi, indicizzati fulltext![]()
Hai usato BOOLEAN MODE??? MATCH ... AGAINST e' compatibile dalla 3.23.23 in su.Originariamente inviato da kilio
MySQL 3.23.56 in esecuzione su localhost ....
ho fatto una query con MATCH .. AGAINST su 2 campi, indicizzati fulltext![]()
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
no, la query l'ho fatta così..
Codice PHP:
SELECT test.id, test.oggetto, test.testo, test.data_post, tit.id, tit.titolo, tit.data, tit.visite, tit.risposte, cat.id, cat.status FROM forum_discussioni_titoli AS tit, forum_discussioni_testi AS test, forum_cat AS cat WHERE MATCH (test.testo, tit.titolo) AGAINST ('$ricerca') AND tit.status < '2' AND cat.status ='1' ORDER BY test.data_post desc
Il problema dovrebbe essere che nella direttiva MATCH le colonne devono appartenere alla stessa tabella ed allo stesso indice fulltext
![]()
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
e quindi la MATCH su 2 tabelle non si puote fare...
![]()
![]()
![]()
come risolvo?
Io ripenserei un attimo le tabelle.... titolo e testo li considerei univoci e inscindibili, e percio' facenti parte della stessa tabella. Impossibile avere due testi con lo stesso titolo e viceversa.Originariamente inviato da kilio
e quindi la MATCH su 2 tabelle non si puote fare...
![]()
![]()
![]()
come risolvo?
![]()
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
no, piero, la cosa è diversa:
ti posto la struttura:
la 1° riporta soltanto i titoli delle discussioni, che ovviamente sono identici agli oggetti (ovvero i titoli che può dare ogni utente nel rispondere) solo nel caso di apertura di una discussione..Codice PHP:
CREATE TABLE `forum_discussioni_titoli` (
`id` smallint(8) unsigned NOT NULL auto_increment,
`cat` tinyint(2) NOT NULL default '1',
`userid` smallint(6) unsigned NOT NULL default '0',
`data` datetime NOT NULL default '0000-00-00 00:00:00',
`titolo` varchar(50) NOT NULL default '',
`status` tinyint(1) NOT NULL default '0',
`visite` int(5) unsigned NOT NULL default '0',
`ultimoscrittore` smallint(6) unsigned NOT NULL default '0',
`risposte` smallint(3) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `userid` (`userid`),
KEY `cat` (`cat`),
FULLTEXT KEY `titolo` (`titolo`)
) TYPE=MyISAM COMMENT='status = 1 bloccata, 2 cancellata, 0 attiva' AUTO_INCREMENT=452 ;
CREATE TABLE `forum_discussioni_testi` (
`id` int(9) unsigned NOT NULL auto_increment,
`cat` tinyint(2) NOT NULL default '0',
`id_titolo` smallint(6) unsigned NOT NULL default '0',
`userid` smallint(6) unsigned NOT NULL default '0',
`data_post` datetime NOT NULL default '0000-00-00 00:00:00',
`oggetto` varchar(50) NOT NULL default '',
`testo` text NOT NULL,
`firma` tinyint(4) NOT NULL default '0',
`notifica` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `id_titolo` (`id_titolo`),
KEY `cat` (`cat`),
FULLTEXT KEY `testo` (`testo`),
FULLTEXT KEY `oggetto` (`oggetto`)
) TYPE=MyISAM COMMENT='tutti i testi dei post ai titoli' AUTO_INCREMENT=3496 ;
non posso purtroppo ripensare il database, altrimenti il capo m'uccide!
cmq ho un altro errore...
codice:Errore query SQL : SELECT test.id, test.oggetto, test.testo, test.data_post, tit.id, tit.titolo, tit.data, tit.visite, tit.risposte, cat.id, cat.status FROM forum_discussioni_titoli AS tit, forum_discussioni_testi AS test, forum_cat AS cat WHERE MATCH ( test.testo, test.oggetto ) AGAINST ( 'Virtuale' ) AND tit.status < '2' AND cat.status = '1' ORDER BY test.data_post DESC LIMIT 0 , 30 Messaggio di MySQL: #1191 - Can't find FULLTEXT index matching the column list
cosa posso fare??
Mi quoto....Originariamente inviato da piero.mac
Il problema dovrebbe essere che nella direttiva MATCH le colonne devono appartenere alla stessa tabella ed allo stesso indice fulltext
FULLTEXT KEY `testo` (`testo`),
FULLTEXT KEY `oggetto` (`oggetto`)
Hai due indici diversi, mentre devi avere un solo indice fulltext con due campi.
Cancelli un indice fulltext (es. oggetto) e poi la query sara' del tipo....
ALTER TABLE `forum_discussioni_testi`
DROP INDEX `testo` ,
ADD FULLTEXT `testo` (`testo` , `oggetto`)
Pero' non la posso provare, spero sia corretta. Dovresti trovarti con un indice di nome testo che comprende i due campi.
![]()
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.