38 \
Magento\Framework\Stdlib\DateTime\DateTime $coreDate
40 parent::__construct(
$resource, $modulePrefix);
41 $this->_coreDate = $coreDate;
53 return sprintf(
'DROP TABLE IF EXISTS %s;', $quotedTableName);
68 foreach ($this->_foreignKeys as
$table => $foreignKeys) {
72 $foreignKeys = $this->_foreignKeys[
$tableName];
88 if (!is_array($foreignKeys) || empty($foreignKeys)) {
93 "ALTER TABLE %s\n %s;\n",
95 join(
",\n ", $foreignKeys)
111 if ($addDropIfExists) {
112 $script .=
'DROP TABLE IF EXISTS ' . $quotedTableName .
";\n";
115 $sql =
'SHOW CREATE TABLE ' . $quotedTableName;
117 $script .= isset(
$data[
'Create Table']) ?
$data[
'Create Table'] .
";\n" :
'';
134 $query =
'SHOW CREATE TABLE ' . $quotedTableName;
137 if (!
$row || !isset(
$row[
'Table']) || !isset(
$row[
'Create Table'])) {
141 $regExp =
'/,\s+CONSTRAINT `([^`]*)` FOREIGN KEY \(`([^`]*)`\) ' .
142 'REFERENCES `([^`]*)` \(`([^`]*)`\)' .
143 '( ON DELETE (RESTRICT|CASCADE|SET NULL|NO ACTION))?' .
144 '( ON UPDATE (RESTRICT|CASCADE|SET NULL|NO ACTION))?/';
146 preg_match_all($regExp,
$row[
'Create Table'], $matches, PREG_SET_ORDER);
148 if (is_array($matches)) {
149 foreach ($matches as $match) {
151 'ADD CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s)%s%s',
156 isset($match[5]) ? $match[5] :
'',
157 isset($match[7]) ? $match[7] :
'' 162 if ($withForeignKeys) {
163 $sql =
$row[
'Create Table'];
165 $sql = preg_replace($regExp,
'',
$row[
'Create Table']);
180 $versionRow = $this->
getConnection()->fetchRow(
'SHOW VARIABLES LIKE \'version\'');
181 $hostName = !empty($dbConfig[
'unix_socket'])
182 ? $dbConfig[
'unix_socket']
183 : (!empty($dbConfig[
'host']) ? $dbConfig[
'host'] :
'localhost');
185 $header =
"-- Magento DB backup\n" .
187 "-- Host: {$hostName} Database: {$dbConfig['dbname']}\n" .
188 "-- ------------------------------------------------------\n" .
189 "-- Server version: {$versionRow['Value']}\n\n" .
190 "/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;\n" .
191 "/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;\n" .
192 "/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;\n" .
193 "/*!40101 SET NAMES utf8 */;\n" .
194 "/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;\n" .
195 "/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;\n" .
196 "/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;\n" .
197 "/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;\n";
209 $footer =
"\n/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;\n" .
210 "/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; \n" .
211 "/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;\n" .
212 "/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;\n" .
213 "/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;\n" .
214 "/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;\n" .
215 "/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;\n" .
216 "\n-- Dump completed on " .
217 $this->_coreDate->gmtDate() .
233 "-- Dumping data for table {$quotedTableName}\n" .
235 "LOCK TABLES {$quotedTableName} WRITE;\n" .
236 "/*!40000 ALTER TABLE {$quotedTableName} DISABLE KEYS */;\n";
248 return "/*!40000 ALTER TABLE {$quotedTableName} ENABLE KEYS */;\n" .
"UNLOCK TABLES;\n";
305 $dataTypes = [
'bigint',
'mediumint',
'smallint',
'tinyint'];
308 if (
$data ===
null) {
310 }
elseif (in_array(strtolower($describe[$key][
'DATA_TYPE']), $dataTypes)) {
318 return sprintf(
'(%s)', implode(
',', $rowData));
328 $this->
getConnection()->query(
'SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE');
338 $this->
getConnection()->query(
'SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ');
352 $script =
"--\n-- Triggers structure for table `{$tableName}`\n--\n";
359 if ($addDropIfExists) {
360 $script .=
'DROP TRIGGER IF EXISTS ' .
$trigger[
'Trigger'] .
";\n";
362 $script .=
"delimiter ;;\n";
364 $triggerData = $this->
getConnection()->query(
'SHOW CREATE TRIGGER '. $trigger[
'Trigger'])->fetch();
366 $cleanedScript = preg_replace(
'/DEFINER=[^\s]*/',
'', $triggerData[
'SQL Original Statement']);
367 $script .= $cleanedScript .
"\n";
369 $script .= $triggerData[
'SQL Original Statement'] .
"\n";
372 $script .=
"delimiter ;\n";
getTableDataAfterSql($tableName)
getTableCreateScript($tableName, $addDropIfExists=false)
getTableDropSql($tableName)
prepareTransactionIsolationLevel()
elseif(isset( $params[ 'redirect_parent']))
_quoteRow($tableName, array $row)
getTableCreateSql($tableName, $withForeignKeys=false)
getPartInsertSql($tableName, $count=null, $offset=null)
getTableForeignKeysSql($tableName=null)
__construct(\Magento\Framework\App\ResourceConnection $resource, $modulePrefix, \Magento\Framework\Stdlib\DateTime\DateTime $coreDate)
_buildForeignKeysAlterTableSql($tableName, $foreignKeys)
getTableTriggersSql($tableName, $addDropIfExists=false, $stripDefiner=true)
getTableDataBeforeSql($tableName)
restoreTransactionIsolationLevel()