У меня возникла эта проблема. Одна таблица в нашей базе данных приложения продолжает вставлять пустые данные. Это основная таблица, поэтому обычно новые данные не добавляются. Теперь я хочу знать, откуда берутся эти операции вставки. В исходном коде я не могу найти ссылки, по которой мы можем вставить данные в эту конкретную таблицу.
Итак, я создаю триггер, чтобы всякий раз, когда таблица получала операцию вставки, она не выполнялась. Надеюсь, я могу поймать все, что создает вставки.
Вчера я вижу в нашем журнале следующее:
Error (E_UNKNOWN) :: Encountered an unexpected error
: ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG: Can't update table 'provinces' in stored function/trigger because it is already used by statement which inv
oked this stored function/trigger.
at Query.Sequence._packetToError (/home/ubuntu/apps/brambang/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:48:14)
at Query.ErrorPacket (/home/ubuntu/apps/brambang/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Query.js:83:18)
at Protocol._parsePacket (/home/ubuntu/apps/brambang/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:280:23)
at Parser.write (/home/ubuntu/apps/brambang/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Parser.js:73:12)
at Protocol.write (/home/ubuntu/apps/brambang/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:39:16)
at Socket.<anonymous> (/home/ubuntu/apps/brambang/node_modules/sails-mysql/node_modules/mysql/lib/Connection.js:96:28)
at emitOne (events.js:96:13)
at Socket.emit (events.js:188:7)
at readableAddChunk (_stream_readable.js:176:18)
at Socket.Readable.push (_stream_readable.js:134:10)
at TCP.onread (net.js:559:20)
--------------------
at Protocol._enqueue (/home/ubuntu/apps/brambang/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:141:48)
at PoolConnection.query (/home/ubuntu/apps/brambang/node_modules/sails-mysql/node_modules/mysql/lib/Connection.js:201:25)
at Object.f.dynatraceRegularInvoke [as doInvoke] (/opt/dynatrace/oneagent/agent/res/nodeagent/nodejsagent.js:9243:20)
at Object.a.safeInvoke (/opt/dynatrace/oneagent/agent/res/nodeagent/nodejsagent.js:9316:29)
at PoolConnection.query (/opt/dynatrace/oneagent/agent/res/nodeagent/nodejsagent.js:6104:15)
at __CREATE__ (/home/ubuntu/apps/brambang/node_modules/sails-mysql/lib/adapter.js:394:20)
at afterwards (/home/ubuntu/apps/brambang/node_modules/sails-mysql/lib/connections/spawn.js:84:5)
at /home/ubuntu/apps/brambang/node_modules/sails-mysql/lib/connections/spawn.js:40:7
at Ping.onOperationComplete [as _callback] (/home/ubuntu/apps/brambang/node_modules/sails-mysql/node_modules/mysql/lib/Pool.js:99:5)
at Ping.Sequence.end (/home/ubuntu/apps/brambang/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:96:24)
at Ping.Sequence.OkPacket (/home/ubuntu/apps/brambang/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:105:8)
at Protocol._parsePacket (/home/ubuntu/apps/brambang/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:280:23)
at Parser.write (/home/ubuntu/apps/brambang/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Parser.js:73:12)
at Protocol.write (/home/ubuntu/apps/brambang/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:39:16)
at Socket.<anonymous> (/home/ubuntu/apps/brambang/node_modules/sails-mysql/node_modules/mysql/lib/Connection.js:96:28)
at emitOne (events.js:96:13)
at Socket.emit (events.js:188:7)
at readableAddChunk (_stream_readable.js:176:18)
at Socket.Readable.push (_stream_readable.js:134:10)
at TCP.onread (net.js:559:20)
Details: Error: ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG: Can't update table 'provinces' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
Хорошо, теперь я знаю, что одна часть этого приложения вставляет что-то в таблицу, теперь вопрос в том, как мне определить, какая часть моих приложений делает это?
Есть идеи, как мне поступить? Я не нашел ссылки на то, какая часть кода делает это.
Спасибо.
- Я установил проверку Not Null на таблицу, но данные продолжают поступать (до создания триггера), не нулевые, а пустые.
- Я даже создал планировщик для удаления чего-либо с идентификатором> 94, поскольку при наличии пустых данных в таблице некоторые части веб-приложений получают ошибки.
- Я хочу разобраться с тем, что создает эти пустые данные.