Отслеживать использование определенного поля базы данных - PullRequest
0 голосов
/ 05 июля 2010

У меня неприятная проблема. Я хочу избавиться от определенного поля базы данных, но я не уверен, в каком фрагменте кода он вызывается. Есть ли способ узнать, откуда это поле используется / вызывается (кроме текстового поиска в коде; это довольно бесполезно, поскольку поле называется «электронная почта»)?

Приветствия

Ответы [ 5 ]

2 голосов
/ 05 июля 2010

Вначале я выполнял текстовый поиск файлов по имени таблицы, а затем только по таблицам, которые содержат имя таблицы, по имени поля.

Я написал программу для этого в своих целях.Он создает список таблиц и полей в памяти и связывает таблицы с полями.Затем он просматривает таблицы, ищет файлы кода, содержащие имена таблиц, а затем ищет в этих файлах поля в найденных таблицах.Я бы порекомендовал подобную методологию в вашем случае.

1 голос
/ 05 июля 2010

перебор - настройте экземпляр теста - удалите столбец - и выполните тестовый набор.

1 голос
/ 05 июля 2010

установка mysql для регистрации всех запросов в течение некоторого времени может помочь.запросы дадут вам подсказку, где искать

0 голосов
/ 05 июля 2010

создайте триггер до вставки в этой таблице, который отслеживает вставку в этот столбец.

одновременно создайте другую таблицу с именем monitor только с одним столбцом email

makeэта таблица вставляет значение поля NEW.email в monitor.email, а также в реальную таблицу.

, чтобы вы могли запустить свое приложение и проверить наличие любого ненулевого значения в таблице монитора

0 голосов
/ 05 июля 2010

Вы должны сделать это в PHP, я бы ожидал

Например:

<?php
class Query
{
    var $command;
    var $resource;
    function __construct($sql_command = '')
    {
       $this->command = $sql_command;
    }

    public function setResource($resource)
    {
        $this->resource = $resource;
    }
}

//then you would have some kind of database class, but here we would modify the query method.

class Database
{
    function query(Query $query)
    {
       $resource = mysql_query($query->command);
       $query->setResource($resource);

       //Then you can send the class to the monitor
       QueryMonitor::Monitor($query);
    }
}

abstract class QueryMonitor
{
    public static Monitor(Query $query)
    {
       //here you use $query->resource to do monitoring of queryies
       //You can also parse the query and gather what query type it was:-
       //Select or Delete, you can also mark what tables were in the Query
       //Even meta data so
       $total_found = mysql_num_rows($query->resource);
       $field_table = mysql_field_table ($query->resource);
       //Just an example..
    }
}
?>

Очевидно, что это будет более продвинутым, но вы можете настроить систему для мониторинга каждого запросакаждый запрос метаданных в файле журнала или мы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...