Avatar billede alvion Nybegynder
16. juli 2001 - 15:24 Der er 5 kommentarer og
2 løsninger

Til MySQL Eliten: FULLTEXT indeks skaber fejl i indeks filen

Jeg har tidligere stillet spørgsmål om en tabel jeg har med et FULLTEXT indeks. Dengang kunne ingen svare, men jeg har muligvis indsnævret problematikken så nogen kan give et kvalificeret svar.

Nedenstående tabel indeholder et FULLTEXT indeks, der indekserer 2 VARCHAR felter + 4 TEXT felter.

CREATE TABLE `visitkort` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `kategori_id` int(10) unsigned NOT NULL default \'0\',
  `aktiv` tinyint(3) unsigned NOT NULL default \'0\',
  `navn` varchar(60) NOT NULL default \'\',
  `adresse` varchar(150) NOT NULL default \'\',
  `postnr` varchar(5) NOT NULL default \'\',
  `tlf` varchar(20) NOT NULL default \'\',
  `fax` varchar(20) NOT NULL default \'\',
  `email` varchar(60) NOT NULL default \'\',
  `password` varchar(20) NOT NULL default \'\',
  `url` varchar(150) NOT NULL default \'\',
  `beskrivelse` varchar(200) NOT NULL default \'\',
  `visitkort` tinyint(3) unsigned NOT NULL default \'0\',
  `skabelon` tinyint(3) unsigned NOT NULL default \'0\',
  `logo` tinyint(3) unsigned NOT NULL default \'0\',
  `billede` tinyint(3) unsigned NOT NULL default \'0\',
  `tekst1` text NOT NULL,
  `tekst2` text NOT NULL,
  `tekst3` text NOT NULL,
  `tekst4` text NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `kategori_id` (`kategori_id`),
  KEY `bruger_id` (`visitkort`),
  KEY `postnr` (`postnr`),
  KEY `email` (`email`),
  FULLTEXT KEY `ft`
(`navn`,`beskrivelse`,`tekst1`,`tekst2`,`tekst3`,`tekst4`)
) TYPE=MyISAM;

Tabellen indeholder p.t. 338 rows, og fejlen er som følger:

Når jeg indsætter en ny row, f.eks. med følgende sætning fra MySQL konsollen:

insert into visitkort (navn, kategori_id) values (\'test7\', 106);

og bagefter kører en \"myisamchk --extend-check visitkort\", får jeg fejlen:

C:\\mysql\\data\\midtfyn>myisamchk --extend-check visitkort
Checking MyISAM file: visitkort
Data records:    339  Deleted blocks:      0
myisamchk: warning: 1 clients is using or hasn\'t closed the table properly
- check file-size
- check key delete-chain
- check record delete-chain
- check index reference
- check data record references index: 1
- check data record references index: 2
- check data record references index: 3
- check data record references index: 4
- check data record references index: 5
- check records and index references
MyISAM-table \'visitkort\' is usable but should be fixed


For at kunne reparere tabellen (indekset) er jeg først nødt til at eksekvere \"flush tables\", hvorefter \"myisamchk --safe-recover visitkort\" kan reparere med følgende meddelelse

C:\\mysql\\data\\midtfyn>myisamchk --safe-recover -force visitkort
- recovering (with sort) MyISAM-table \'visitkort.MYI\'
Data records: 339
- Fixing index 1
Found block with too small length at 22812; Skipped
- Fixing index 2
- Fixing index 3
- Fixing index 4
- Fixing index 5


Hvis jeg drop\'er FULLTEXT indekset virker alting fint. Er der en bug i FULLTEXT? Måske *skal* TEXT felterne acceptere NULL-værdier? (Har jeg ikke afprøvet)

Jeg har nu bakset med det her i en måned, og inden jeg skriver til Monty vil jeg gerne først høre eksperternes bud. Så hvis du længe har savnet et udfordrene spørgsmål, så har du hermed fået det.
Avatar billede henrik_ffc Nybegynder
16. juli 2001 - 15:43 #1
Jeg kan ikke løse problemet, blot konstatere at samme tabel også giver
problemer i MySQL 3.23.37 / Linux.

Efter at have udført din insert
(insert into visitkort (navn, kategori_id) values (\'test7\', 106);)
et par gange har jeg fået lidt forskellige fejl.

Den ene gang mistede jeg en tubel ved recovery, men ellers har
myisamchk --safe-recover visitkort
kunne rette op på problemet hver gang...

Bug?
Avatar billede alvion Nybegynder
16. juli 2001 - 15:51 #2
Tak det var faktisk den slags problemløsning jeg håbede på, selvom jeg glemte at skrive det: test på andre maskiner/platforme

Jeg stødte først på problemet på Win2k server SP2 med MySQL 3.23.32 - jeg har opgraderet til 3.23.39 uden at det har løst problemet.

Jeg vil lige lade spørgsmålet stå en dags tid inden jeg laver en bug-report til MySQL AB
Avatar billede alvion Nybegynder
16. juli 2001 - 16:43 #3
henrik_ffc -> Hvad er det for en Linux, og hvilken version?
Avatar billede henrik_ffc Nybegynder
16. juli 2001 - 17:00 #4
RedHat 7.1
Kerne 2.4.5
Avatar billede alvion Nybegynder
16. juli 2001 - 17:05 #5
Er det en RPM eller har du selv kompileret MySQL?

Til alle andre: Jeg vil gerne bede alle, der har mulighed for det om at teste ovenstående. Jeg giver 30 point til alle, der prøver og giver mig et fyldestgørende svar retur.

Det jeg skal vide som svar er:

- Operativsystem og version (F.eks. Win2k server SP2 eller Mandrake Linux 8.0 kerne 2.4.5)

- MySQL version (f.eks. 3.23.35 eller 3.23.38MAX) og om det er en prækompileret binary distribution eller du selv har kompileret den.

- Evt. andre fejl, som myisamchk giver i forhold til dem jeg har skrevet.

Jeg lader spørgsmålet stå åbent et par dage inden jeg giver point.

henrik -> Smid et svar - du har allerede fortjent point.
Avatar billede henrik_ffc Nybegynder
16. juli 2001 - 17:10 #6
Jeg har selv kompileret både kerne og MySQL
Avatar billede alvion Nybegynder
19. juli 2001 - 01:49 #7
Jeg har fundet en (om ikke holdbar, så acceptabel løsning). Alle tekst-felter, som indgår i fulltext-indekset, ændres så de accepterer NULL-værdier. Så er der ingen problemer.


henrik du får point som tak for din hjælp.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester