Problème avec le module recherche [Réglé]
guilmoon Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre guilmoon
- Inscrit le : 30/09/2011
- Site internet
Je commence a mettre en place une zone d'essai de phpboost sur mon serveur.
Tout se met en place gentillement.
Toutefois, je suis devant une erreur récurrente que je n'ai pas la capacité de régler ( novice dans le domaine php/mysql )
J'obtiens l'erreur suivante:
Code TEXT :
Erreur fatale : invalid while request
(SELECT
44 AS id_search,
a.id AS id_content,
a.title AS title,
( 2 * MATCH(a.title) AGAINST('alone') + MATCH(a.contents) AGAINST('alone') ) / 3 * 5 AS relevance, CONCAT(CONCAT(CONCAT('../articles/articles.php?id=',a.id),'&cat='),a.idcat) AS link
FROM phpboost_articles a
LEFT JOIN phpboost_articles_cats ac ON ac.id = a.idcat
WHERE
a.visible = 1 AND ((ac.aprob = 1 AND ac.auth LIKE '%s:3:"r-1";i:1;%') OR a.idcat = 0)
AND (MATCH(a.title) AGAINST('alone') OR MATCH(a.contents) AGAINST('alone'))
ORDER BY relevance DESC LIMIT 0, 10) UNION (SELECT 45 AS id_search,
d.id AS id_content,
d.title AS title,
( 3 * MATCH(d.title) AGAINST('alone') + 2 * MATCH(d.short_contents) AGAINST('alone') + MATCH(d.contents) AGAINST('alone') ) / 6 * 3 AS relevance, CONCAT('../download/download.php?id=',d.id) AS link
FROM phpboost_download d
WHERE ( MATCH(d.title) AGAINST('alone') OR MATCH(d.short_contents) AGAINST('alone') OR MATCH(d.contents) AGAINST('alone') ) AND d.idcat IN (1) ORDER BY relevance DESC LIMIT 0, 100) UNION (SELECT 46 AS `id_search`,
msg.id AS `id_content`,
t.title AS `title`,
MATCH(t.title) AGAINST('alone') * 3 AS `relevance`,
CONCAT(CONCAT(CONCAT(CONCAT('..','/forum/topic.php?id='),t.id),'#m'),msg.id) AS `link`
FROM phpboost_forum_msg msg
JOIN phpboost_forum_topics t ON t.id = msg.idtopic
JOIN phpboost_forum_cats c ON c.level != 0 AND c.aprob = 1 AND c.id = t.idcat
WHERE MATCH(t.title) AGAINST('alone')
GROUP BY t.id
ORDER BY relevance DESC LIMIT 0, 50) UNION (SELECT 47 AS id_search,
f.id AS id_content,
f.name AS title,
( 2 * MATCH(f.name) AGAINST('alone') + MATCH(f.contents) AGAINST('alone') ) / 3 * 1 AS relevance, CONCAT(CONCAT(CONCAT('../media/media.php?id=',f.id),'&cat='),f.idcat) AS link
FROM phpboost_media f
WHERE ( MATCH(f.name) AGAINST('alone') OR MATCH(f.contents) AGAINST('alone') ) AND f.idcat IN (1,2) ORDER BY relevance DESC LIMIT 0, 100) UNION (SELECT 48 AS id_search,
n.id AS id_content,
n.title AS title,
( 2 * MATCH(n.title) AGAINST('alone') + (MATCH(n.contents) AGAINST('alone') + MATCH(n.extend_contents) AGAINST('alone')) / 2 ) / 3 * 1 AS relevance, CONCAT('../news/news.php?id=',n.id) AS link
FROM phpboost_news n
WHERE ( MATCH(n.title) AGAINST('alone') OR MATCH(n.contents) AGAINST('alone') OR MATCH(n.extend_contents) AGAINST('alone') )
AND visible = 1 AND ('1317541934' > start AND ( end = 0 OR '1317541934' < end ) )
ORDER BY relevance DESC LIMIT 0, 100)
Illegal mix of collations for operation 'UNION'
Ligne 338 : search.class.php Parfois il n y a pas cette erreur, mais la recherche ne trouve jamais rien ( et me dit :"Aucune option de recherche spécifique à ce module" quand je cherche dans "articles par exemple )
Certes, je teste sur un seul article ( insuffisant pour faire fonctionner la recherche correctement?)
Merci pour vos aides éventuelles, je sais que le problème a souvent été évoqué, mais je suis incapable de le résoudre dans l'état actuel de mes connaissances.
Édité par guilmoon Le 29/11/2011 à 09h53
ReidLos Membre non connecté
-
Modérateur
- Voir le profil du membre ReidLos
- Inscrit le : 27/02/2009
- Site internet
- Groupes :
-
Equipe Développement
Peux tu exécuter ces requêtes là s'il te plait :
Code SQL :
SELECT TABLE_NAME, table_collation FROM information_schema.TABLES WHERE TABLE_NAME LIKE 'phpboost_%'
Code SQL :
SELECT TABLE_NAME, column_name, column_type, collation_name, character_set_name FROM information_schema.COLUMNS WHERE TABLE_NAME LIKE 'phpboost_%' AND collation_name != ''
Et donne moi le retour de ces requêtes.
guilmoon Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre guilmoon
- Inscrit le : 30/09/2011
- Site internet
ReidLos :
Bonjour,
Peux tu exécuter ces requêtes là s'il te plait :
Et donne moi le retour de ces requêtes.
Peux tu exécuter ces requêtes là s'il te plait :
Code SQL :
SELECT TABLE_NAME, table_collation FROM information_schema.TABLES WHERE TABLE_NAME LIKE 'phpboost_%'
Code SQL :
SELECT TABLE_NAME, column_name, column_type, collation_name, character_set_name FROM information_schema.COLUMNS WHERE TABLE_NAME LIKE 'phpboost_%' AND collation_name != ''
Et donne moi le retour de ces requêtes.
Bonjour et merci pour votre aide.
Les réponses sont:
Alors pour la première requêtes, j'obtiens 30 tables phpboost_ avec leur collation( j en ai pourtant bien 53 sur la bdd). Soit elles sont en "latin1_german1_ci" soit en "latin1_swedish_ci"

pour la seconde, voici un screen shoot.

Merci encore de votre intérêt
Édité par guilmoon Le 02/10/2011 à 12h55
guilmoon Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre guilmoon
- Inscrit le : 30/09/2011
- Site internet
Mes table_collation sont tous passés en latin-sweedish
Pareil pour la quasi totalité de mes collation_name, sauf deux où j'ai un retour d'erreur quand je tente la "conversion", il sagit de ceci:
Code :
ALTER TABLE `phpboost_pages` modify column `title` varchar(255) character SET latin1 COLLATE latin1_swedish_ci DEFAULT NULL;Code :
ALTER TABLE `phpboost_pages` modify column `contents` mediumtext character SET latin1 COLLATE latin1_swedish_ci DEFAULT NULLAvec ce message d'erreur en retour dans les deux cas:
Citation :
#1283 - Column 'contents' cannot be part of FULLTEXT index
Je n 'ai plus de message d'erreur quand j'utilise la recherche dans phpboost ( ca progresse ! ) , mais les recherches n'aboutissent toujours pas ( saut pour la partie forum où j'ai des résultats ).
Édité par guilmoon Le 03/10/2011 à 22h47
ReidLos Membre non connecté
-
Modérateur
- Voir le profil du membre ReidLos
- Inscrit le : 27/02/2009
- Site internet
- Groupes :
-
Equipe Développement
Pour les résultats, tu es sûr d'avoir assez de contenu ?
guilmoon Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre guilmoon
- Inscrit le : 30/09/2011
- Site internet
Sinon, j'ai visiblement réussi à convertir les deux dernieres " collation_name" en utilisant ceci :
Code :
ALTER TABLE `phpboost_pages` CHANGE `title` `title` VARCHAR(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
CHANGE `contents` `contents` MEDIUMTEXT CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL;Et en vérifiant le tout grace a la requete ci-dessous, je n'ai plus que des "latin1_swedish_ci"
Code :
SELECT table_name, column_name, column_type, collation_name, character_set_name
FROM information_schema.COLUMNS
WHERE table_name LIKE 'phpboost_%' AND collation_name != ''Mais au final, c'est vrai que tout est expliqué clairement dans le topic épinglé, et même si on est pas calé dans le domaine, on finit par y arriver avec de la persévérance^^
Par contre, je me permets de laisser ouvert ce thread quelques jours, le temps de vérifier qu'il n'y a pas d'erreurs qui ressurgissent
Édité par guilmoon Le 03/10/2011 à 23h39
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie