データベースがインポートできない

2014年4月9日 at 5:40

さくらインターネットでデータベースの復元ができません。

ファイルをサーバへFTPでアップし、
phpMyadminにてローカル環境で作成したデータベースをインポートしたのですが、
下記のエラーが出てしまいます。

-----------------------------------------------------

Fatal error: Uncaught exception 'ADODB_Exception' with message 'mysqlt error: [1146: Table '*****_db.Config' doesn't exist] in EXECUTE("select * from Config where uID = 0 order by cfKey asc") ' in /home/*****/www/concrete/libraries/3rdparty/adodb/adodb-exceptions.inc.php:78 Stack trace: #0 /home/*****/www/concrete/libraries/3rdparty/adodb/adodb.inc.php(1074): adodb_throw('mysqlt', 'EXECUTE', 1146, 'Table 'shock-lu...', 'select * from C...', false, Object(ADODB_mysqlt)) #1 /home/*****/www/concrete/libraries/3rdparty/adodb/adodb.inc.php(1049): ADOConnection->_Execute('select * from C...', false) #2 /home/*****/www/concrete/core/models/config.php(182): ADOConnection->Execute('select * from C...') #3 /home/*****/www/concrete/core/models/config.php(173): Concrete5_Model_ConfigStore->load() #4 /home/*****/www/concrete/core/models/config.php(48): Concrete5_Model_ConfigStore->__construct() #5 /home/*****/www/concrete/core/models/config.php(68): Concrete5_Model_Config::getStore() #6 /home/sh in /home/*****/www/concrete/libraries/3rdparty/adodb/adodb-exceptions.inc.php on line 78

※サイト名を*****にて伏せています。
-------------------------------------------------

どうやら、「Config」という名のテーブルが無い、ということの様なのですが、
インポートしたテーブル郡には「config」というテーブルは存在します。

試しにテーブル名を「Config」に変更してみると、
「予期せぬエラーが発生しました。」となり、エラーは違うところへ移った様子…。

テーブル名の大文字と小文字の違いを判定しているのかなと思います。

ちなみに、テーブルを再度、空にして、
ブラウザ上からログインIDなども入力してconcrete5をインストールしてみると、
データベース内にできたテーブル郡は「Config」や「BlockTypes」など、
大文字も含まれたテーブル名になっていました。

ローカルでインストールした時はすべて小文字のテーブルなので、
インポートしても違うテーブルとみなされて整合性が取れていないような状況です。

照合順はutf8_general_ciになっています。

何か設定など不足があるのでしょうか?
ローカルでバックアップしたデータを利用するための解決方法はありますでしょうか?

さくらインターネット スタンダード
PHP 5.4
MySQL クライアントのバージョン: 5.5.28
concrete5 5.6.2.1

ご教授お願い致しますm(__)m

タグ:

Re: データベースがインポートできない

2014年4月9日 at 6:57
ローカルで作成されたものをさくらサーバーにアップした場合
config/site.php の内容も変更しないといけません。
それは行われましたか?
 

Re: データベースがインポートできない

2014年4月9日 at 7:05
concrete5のテーブル名は本来キャメルケース(DatabaseName)で、全て小文字になっているのが問題ですね。ローカルでXAMPPで構築されていますか?windowsでは、MySQLのデータベース名に大文字を使えないのがデフォルト設定になっていまして、設定を変更する必要があります。また、すでに小文字のテーブル名で作ってしまっているので、既存のテーブル名をキャメルケースに修正する必要があります。

データベース名を修正するにはフリーの専用のアドオンが公開されています。

Database Case Sensitivity Migration (MySQL)
http://www.concrete5.org/marketplace/addons/database-case-sensitivity-migration/

このアドオンは管理画面からはインストールできないので、リンク先の「Download Archive」をクリックしてダウンロードし、zipを解凍してユーザー領域のpackagesフォルダ(インストール直後に空の方)にアップロードしてください。そうすると、管理画面の[concrete5を拡張 - インストール]に表示されますので、インストールします。今回の場合は、ローカルで構築したconcrete5サイトでインストールします。

このアドオンを使ってデータベーステーブル名を修復するには、次の手順で行ないます。

1. MySQLサーバーの設定ファイル(my.iniまたはmy.cnf)を変更する必要があります。lower_case_table_names=0 という行を追加してください。
2. MySQLを再起動します。XAMPPであればXAMPPの再起動で大丈夫です。
3. [管理画面→システムと設定→バックアップとリストア→Database Migration]ページに移動します。
4. 「Run Migration」ボタンをクリックします。

「Migrated successfully!」と表示されたら成功です。サーバーへのインポートを再度試してみてください。

※ さくらインターネットとは関係ない投稿でしたので、スレッドを移動させていただきました。
 

Re: データベースがインポートできない

2014年4月9日 at 16:16
XAMPP側の問題だったとは…。

おかげ様で解決できました。

ありがとうございましたm(__)m
 

Re: データベースがインポートできない

2016年1月28日 at 16:51
asamiさんと同じ状況になり、このページの内容で対処し始めたのですが、XAMPPをインストールし、MySQLの設定でlower_case_table_names = 0を追記するとMySQLが起動しません。
lower_case_table_names = 2とすると起動しますので、先の手順で進めたのですが、Migrade後にデータベースをエクスポートしましたが、configテーブルの名称のcは小文字のままでした。
lower_case_table_names = 0としてMySQLを起動するにはどうしたらいいでしょうか?
XAMPPは5.6.15 / PHP 5.6.15をDLしてインストールしました。