esono/shopware-sql-logger

There is no license information available for the latest version (0.0.1) of this package.

Logs SQL statements that change the database into a logfile

0.0.1 2022-03-03 11:13 UTC

README

Installation

  • $ composer require esono/shopware-sql-logger
  • Activate it for dev in bundles.php
    \Esono\ShopwareSqlLogger\ShopwareSqlLoggerBundle::class => [ 'dev' => true ],

Creates a logfile in var/log/sql.log for relevant database changes. These queries are meant to be used as a starting point for database migrations.

Example log output:

// VVBEQVRFIGBwcm9kdWN0X3RyYW5zbGF0aW9uYCBTRVQgYHByb2R1Y3RfaWRgID0gPywgYGxhbmd1YWdlX2lkYCA9ID8sIGBwcm9kdWN0X3ZlcnNpb25faWRgID0gPywgYGRlc2NyaXB0aW9uYCA9ID8sIGB1cGRhdGVkX2F0YCA9ID8gV0hFUkUgcHJvZHVjdF9pZCA9ID8gQU5EIGxhbmd1YWdlX2lkID0gPyBBTkQgcHJvZHVjdF92ZXJzaW9uX2lkID0gPw==
$connection->executeQuery('UPDATE `product_translation` SET `product_id` = ?, `language_id` = ?, `product_version_id` = ?, `description` = ?, `updated_at` = ? WHERE product_id = ? AND language_id = ? AND product_version_id = ?', array (
  0 => 'FROM_BASE64(\'x7yiJ1PITQi2F4pQBStBRg==\')',
  1 => 'FROM_BASE64(\'L7tf4uKaTXCqWFTOfOPiCw==\')',
  2 => 'FROM_BASE64(\'D6kc4+lqS8K+S9nOdSw0JQ==\')',
  3 => 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gub<span style="letter-spacing: 0px;">ergren, no sea takimata sanctus est Lorem ipsum dolor sit am</span><div><br></div><div>&nbsp; &nbsp;<br><div><span style="letter-spacing: 0px;"><br></span></div></div>',
  4 => '2022-03-03 10:49:23.257',
  5 => 'FROM_BASE64(\'x7yiJ1PITQi2F4pQBStBRg==\')',
  6 => 'FROM_BASE64(\'L7tf4uKaTXCqWFTOfOPiCw==\')',
  7 => 'FROM_BASE64(\'D6kc4+lqS8K+S9nOdSw0JQ==\')',
));

Binary strings (e.g. ids) are base64 encoded. In most instances, the statements from the log can be copied to a migration 1:1.

Should there be unescaped binary data in a query, then the original query is base64 encoded in the comment above the statement.