[MySQL] Can't unlock file (Errcode 11 - HY000)

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • cor-gijs
  • Registratie: Maart 2000
  • Laatst online: 24-07 10:09

cor-gijs

Dig further for bigger hole

Topicstarter
Ik probeer de onderstaande query uit te voeren, maar krijg de volgende error van MySQL:

"Errcode 11 - Can't unlock file"

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
UPDATE    table_a
       INNER JOIN
          table_b
       ON table_a.RefDocNum = table_b.RefDocNum 
   SET table_b.Opnamedatum = table_a.Opnamedatum,
       table_b.Toevoegdatum = table_a.Toevoegdatum,
       table_b.check1 =
          (CASE WHEN table_a.status1 = 0 THEN 0 ELSE 1 END),
       table_b.Type = table_a.Type,
       table_b.check2 =
          (CASE WHEN table_a.status2 IS NULL THEN 0 ELSE 1 END)
 WHERE table_a.code = "11";


Feiten:
MySQL serverversie 5.1.44 op WinXP Pro (32Bit)

Tabel_a & Tabel_b zijn MyISAM-tabellen

Grootte:
Tabel_a: +- 500.000 records
Tabel_b: +- 20.000.000 records

Index op tabel_b.RefDocNum

Wat heb ik al gedaan
- Zoeken op Google => geen resultaten
- Beide tabellen gecontroleerd met myisamchk.exe => geen fouten gevonden
- Server herstart => geen resultaat

Waar kan dit aan liggen?

There is no adequate defense, except stupidity, against the impact of a new idea.


Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 18:43

BCC

De table is nog gelocked?

[ Voor 13% gewijzigd door BCC op 11-03-2010 13:12 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

  • cor-gijs
  • Registratie: Maart 2000
  • Laatst online: 24-07 10:09

cor-gijs

Dig further for bigger hole

Topicstarter
Voor zover ik weet niet (hoe kan ik dit controleren?)
Ik ben de enige die gebruik maakt van de server en er staat maar één connectie open naar de MySQL-server:

There is no adequate defense, except stupidity, against the impact of a new idea.


Acties:
  • 0 Henk 'm!

  • Cascade
  • Registratie: Augustus 2006
  • Laatst online: 16-09 11:44

Acties:
  • 0 Henk 'm!

  • cor-gijs
  • Registratie: Maart 2000
  • Laatst online: 24-07 10:09

cor-gijs

Dig further for bigger hole

Topicstarter
Ik heb nu geprobeerd om de query in stukjes uit te voeren door het volgende toe te voegen:
SQL:
1
WHERE ID BETWEEN 0 AND 10000


Dit werkt wel. Als ik grotere brokken neem, bijvoorbeeld van 100000 stuks, dan krijg ik dezelfde melding weer.

Dit is natuurlijk niet ideaal. Kan ik ervoor zorgen dat MySQL de query automatisch opdeelt in stukjes van 10000 records, of nog beter: kan ik voorkomen dat hij zich verslikt in grote brokken?

There is no adequate defense, except stupidity, against the impact of a new idea.


Acties:
  • 0 Henk 'm!

  • cariolive23
  • Registratie: Januari 2007
  • Laatst online: 18-10-2024
Tabel_a & Tabel_b zijn MyISAM-tabellen
MyISAM is nauwelijks een database te noemen en heeft veel problemen met locks. Zet de boel om naar innoDB en je bent al veel van deze problemen kwijt. Als bonus krijg je dan ook een relationele database.

Acties:
  • 0 Henk 'm!

  • cor-gijs
  • Registratie: Maart 2000
  • Laatst online: 24-07 10:09

cor-gijs

Dig further for bigger hole

Topicstarter
cariolive23 schreef op vrijdag 12 maart 2010 @ 11:14:
[...]

MyISAM is nauwelijks een database te noemen en heeft veel problemen met locks. Zet de boel om naar innoDB en je bent al veel van deze problemen kwijt. Als bonus krijg je dan ook een relationele database.
Ja, daar had ik ook al aan gedacht. Gisteren heb ik de tabellen omgezet naar InnoDB, de bovengenoemde resultaten/problemen blijven.

wellicht handig: ik heb het volgende gedaan om naar InnoDB te converteren:
SQL:
1
ALTER TABLE tabel_a ENGINE = InnoDB;


is dit voldoende, of moet ik nog wat doen om de index opnieuw op te bouwen?

There is no adequate defense, except stupidity, against the impact of a new idea.


Acties:
  • 0 Henk 'm!

  • cor-gijs
  • Registratie: Maart 2000
  • Laatst online: 24-07 10:09

cor-gijs

Dig further for bigger hole

Topicstarter
Ik heb geprobeerd om de tables te locken

SQL:
1
2
3
4
5
LOCK TABLES table_a READ, table_b WRITE;

#...Query

UNLOCK TABLES


Maar helaas, zonder succes

There is no adequate defense, except stupidity, against the impact of a new idea.

Pagina: 1