Как узнать, какая часть приложений вставляет пустые данные в таблицу? - PullRequest
1 голос
/ 21 марта 2019

У меня возникла эта проблема. Одна таблица в нашей базе данных приложения продолжает вставлять пустые данные. Это основная таблица, поэтому обычно новые данные не добавляются. Теперь я хочу знать, откуда берутся эти операции вставки. В исходном коде я не могу найти ссылки, по которой мы можем вставить данные в эту конкретную таблицу.

Итак, я создаю триггер, чтобы всякий раз, когда таблица получала операцию вставки, она не выполнялась. Надеюсь, я могу поймать все, что создает вставки.

Вчера я вижу в нашем журнале следующее:

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, поскольку при наличии пустых данных в таблице некоторые части веб-приложений получают ошибки.
  • Я хочу разобраться с тем, что создает эти пустые данные.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...