2017-05-02 2 views
1

Actuellement, je cherche le moyen d'ajouter la consignation des instructions SQL lors de l'exécution de tâches mix. Par exemple, des commandes telles mix ecto.rollback et mix ecto.migrate sorties d'information:Enregistrement du niveau de débogage pour les commandes `mix ecto.rollback` et` mix ecto.migrate`

... 
13:45:53.016 [info] == Running Repo.Migrations.AddAmountToUserResources.change/0 backward 
13:45:53.016 [info] alter table user_resources 
... 

Cependant, au lieu de mystérieux alter table user_resources je voudrais voir SQL-déclarations exactes générées par ecto qui frappe DB. Y a-t-il un moyen de le faire?

J'ai vérifié quelques réponses SO, ce qui semble pertinent (par exemple Disable Elixir Ecto Debug output). Malheureusement, ils ne m'ont pas aidé dans mon cas ci-dessus. Merci d'avance.

Répondre

3

Une fonctionnalité permettant de se connecter au SQL brut a été ajoutée à Ecto on 15 Jan 2017. Il n'y a pas eu de sortie d'Ecto depuis. Une fois qu'il y a, ou vous passez à utiliser la version d'Ecto à partir de la branche maître Github, vous pouvez passer --log-sql aux commandes ecto.migrate et ecto.rollback pour le faire consigner la requête complète qui est exécutée.

$ mix ecto.migrate --log-sql 
$ mix ecto.rollback --log-sql 
+0

J'ai ajouté '{: ecto, git: "git: //github.com/elixir-ecto/ecto.git", override: true}' 'dans mon mix.exs', après que je avoir des dépendances mises à jour, et cela fonctionne. 'mix ecto.migrate --log-sql' affiche maintenant les instructions de débogage souhaitables. Je pense que votre réponse restera valide après la publication de cette fonctionnalité. Merci. – sashaegorov