テーブルプレフィックスにアンダースコアがないMagentoを誤ってインストールしました。これを自動的に変更するオプションはありますか?337個のテーブルを手作業で変更するのは好きではありません:-)
私はこの解決策を試しましたが、うまくいかないようです。
マイケル
このselectを使用して、すべてのテーブルの名前を変更するSQLを作成できます。
SELECT 'rename table '||table_name||' to '||'newprefix'||table_name||';'
FROM information_schema.tables
<?php
$database_host="localhost";
$database_user="root";
$database_password="";
$magento_database="test1";
$table_prefix="magtest_";
?>
<?php
$db=mysql_connect($database_host,$database_user,$database_password);
mysql_select_db($magento_database);
$query="SHOW TABLES";
$result=mysql_query($query) or die('Err');
while($row=mysql_fetch_array($result)){$old_table=$row[0];
if(preg_match('/'.$table_prefix.'/',$old_table)){echo"Table $old_table already done<br/>\n";continue;}
$new_table=$table_prefix.$old_table;echo"Renaming $old_table to $new_table<br/>\n";
$query="RENAME TABLE `$old_table` TO `$new_table`";mysql_query($query);}
?>
手順:
MagentoDBテーブルプレフィックスを変更するためにこのphpスクリプトを実行します
// mege_rename_table_prefix.php
//New Prefix Name
$table_prefix = "test_";
//Magento Database Backup php script
error_reporting(E_ALL ^ E_NOTICE);
ini_set('display_errors', 1);
ini_set('memory_limit', '1512M');
// Get Magento Application
require_once 'app/Mage.php';
Mage::app();
// Mage::app('default');
//Mage::app('main');
// get Magento config
$config = Mage::getConfig()->getResourceConnectionConfig("default_setup");
$dbinfo = array(
"host" => $config->host,
"user" => $config->username,
"pass" => $config->password,
"dbname" => $config->dbname
);
// Database Config
$db_host = $dbinfo["host"];
$db_user = $dbinfo["user"];
$db_pass = $dbinfo["pass"];
$db_name = $dbinfo["dbname"];
//conect db
$db = mysql_connect($db_host, $db_user, $db_pass);
mysql_select_db($db_name);
$query = "SHOW TABLES";
$result = mysql_query($query) or die('Err');
while($row = mysql_fetch_array($result)) {
$old_table = $row[0];
if(preg_match('/'.$table_prefix.'/', $old_table)) {
echo "Table $old_table already done<br/>\n";
continue;
}
$new_table = $table_prefix.$old_table;
echo "Renaming $old_table to $new_table<br/>\n";
$query = "RENAME TABLE `$old_table` TO `$new_table`";
mysql_query($query);
}
PHPMyAdminで簡単に変更できます。
Click/open the database.
Click Structure at the top bar.
This will display all your tables. Note the existing prefix.
Scroll to the bottom, to the last table.
Click "Check all".
This will check all tables.
Click the drop down menu just next to it - the one with the default value "with selected".
Select "Replace table prefix:"
This will bring you to a new page with two text inputs.
Fill in your existing prefix, e.g. "oldPrefi_". Don't forget the underscore.
Fill in your new prefix, e.g. "newPrefi_". Don't forget the underscore.
Finally, click submit.
新しいプレフィックスが付いたテーブルリストにリダイレクトされます。
ステップ1-以下のスクリーンショットに示すように、env.phpファイルのtable_prefixを変更します
ステップ2-次のクエリを実行して、既存のテーブルにプレフィックスを追加するためのALTERステートメントを取得します-:
SELECT Concat('ALTER TABLE ', TABLE_NAME, ' RENAME TO qa_',
TABLE_NAME, ';') FROM information_schema.tables WHERE table_schema =
'DB_NAME'
ステップ3-Magentoルートフォルダで次のコマンドを実行して、Magento2DBをアップグレードします
php bin/magento setup:upgrade
問題が発生した場合は、env.phpからtable_prefixを削除し、DBインスタンスで次のクエリを実行して、テーブルの名前を元に戻すことができます。
SELECT Concat('ALTER TABLE ', TABLE_NAME , ' RENAME TO ',
replace(TABLE_NAME,'qa_',''), ';') FROM information_schema.tables
WHERE table_schema = 'magento_2'
それが誰かを助けることを願っています!
その問題を修正する手順(100%動作します、同じ問題があり、それを修正しました)
上記の解決策は、テーブル名を更新できるためほとんど機能しませんが、FORIEGNキーマッピングによって問題が発生します。したがって、以下はそれを修正するための最良の方法です。