Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Tabelle [Tabellenname] ist nicht gesperrt

Sie müssen jeden Tisch sperren , die Sie bis zum LOCK verwenden möchten es ist veröffentlicht worden. Sie können completely_different_table_2 angeben nur ein READ LOCK , wodurch andere Prozesse diese Tabelle lesen können, während sie gesperrt ist:

LOCK TABLES table_1 WRITE, completely_different_table_2 READ;

PS:MySQL hat einen Grund dazu. Wenn Sie ein LOCK anfordern , möchten Sie einen konsistenten Zustand Ihrer Daten einfrieren. Wenn Sie Daten aus completely_different_table_2 lesen in Ihrem LOCK , Ihre Daten werden in table_1 geschrieben wird in gewisser Weise von dieser anderen Tabelle abhängen. Daher möchten Sie nicht, dass jemand diese Tabelle während Ihres LOCK ändert und fordern Sie ein READ LOCK an auch für diesen zweiten Tisch. Wenn Ihre Daten in table_1 geschrieben werden nicht von der anderen Tabelle abhängt, fragen Sie sie einfach nicht bis zum LOCK ab freigegeben.