J'ai vu des mises à jour très basiques arriver à expiration récemment et je n'ai pas pu en déterminer la cause. Un exemple:
// # Query_time: 51 Lock_time: 0 Rows_sent: 0 Rows_examined: 0
UPDATE
photos
SET position = position + 1 WHERE (photo_album_id = 40470);
Le même journal n'a aucune entrée avec un Lock_time> 0. L'exécution show innodb status
ne révèle pas non plus de verrous associés. Ce problème semble affecter au moins 5 tables différentes en fonction des journaux de mon serveur d'applications (qui affichent une Mysql::Error: Lock wait timeout exceeded
erreur liée à chaque entrée correspondante dans le journal mysql-slow).
Une idée sur où aller d'ici? Je frappe des impasses dans toutes les directions. Merci.
ÉDITER:
CRÉER UN TABLEAU `photos` ( `id` int (11) NOT NULL auto_increment, `type` varchar (255) NOT NULL, `photo_album_id` int (11) NOT NULL, `user_id` int (11) NOT NULL, `title` varchar (255) default 'Untitled', texte `description`, `credit` varchar (255) NULL par défaut, `photo_file_name` varchar (255) par défaut NULL, `photo_content_type` varchar (255) par défaut NULL, `photo_file_size` int (11) NULL par défaut, `photo_updated_at` datetime par défaut NULL, `position` int (11) par défaut '0', `vues` int (11) par défaut '0', `dossier` varchar (255) par défaut NULL, `published` tinyint (1) par défaut '0', `published_at` datetime default NULL, `created_at` datetime default NULL, `updated_at` datetime default NULL, `album_published` tinyint (1) par défaut '0', `comment_count` int (11) par défaut '0', `audio_file_name` varchar (255) par défaut NULL, `audio_content_type` varchar (255) par défaut NULL, `audio_file_size` int (11) NULL par défaut, `audio_updated_at` datetime par défaut NULL, `cover` tinyint (1) default '0', `slug` varchar (255) par défaut NULL, `comments_count` int (11) par défaut '0', `delete_from_s3` tinyint (1) par défaut '0', `batch` int (11) NULL par défaut, `audio` varchar (255) par défaut NULL, CLÉ PRIMAIRE (`id`), KEY `index_photos_on_album_published` (` album_published`), KEY `index_photos_on_batch` (` batch`), KEY `index_photos_on_comment_count` (` comment_count`), KEY `index_photos_on_created_at` (` created_at`), KEY `index_photos_on_delete_from_s3` (` delete_from_s3`), KEY `index_photos_on_photo_album_id` (` photo_album_id`), KEY `index_photos_on_published` (` published`), KEY `index_photos_on_published_at` (` published_at`), KEY `index_photos_on_type` (` type`), KEY `index_photos_on_user_id` (` user_id`) ) MOTEUR = InnoDB AUTO_INCREMENT = 42830 DEFAULT CHARSET = utf8
UPDATE table SET <field>=<field>+1 WHERE <pk_field>=1;
Ma table est beaucoup plus simple cependant. Au hasard, cela provoque la même erreur que vous obtenez. Ma version est: 5.1.39. Je passe un peu de temps aujourd'hui à essayer de le comprendre, donc je mettrai à jour si je trouve quelque chose.