web-dev-qa-db-ja.com

テーブルの列名に特殊文字を含むダンプ

古いデータベースを引き継いでいます。ダンプからのリカバリテストの実行中に、テーブルが誤ってバックアップされていることがわかりましたが、テーブル定義が切り捨てられています。

ライブデータベースを見ると、名前に列名特殊文字を含むが見つかりました。つまり、列名Localitàです。

私の現在のmysqlダンプは以下を生成します:

/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `contabilita_banche` (
  `ID_Banca` int(6) unsigned NOT NULL default '0',
  `Descrizione` varchar(70) default NULL,
  `Località;
/*!40101 SET character_set_client = @saved_cs_client */;

最初の問題は、テーブルがそこで終わらないことです。Localitàの後に他のフィールドがあるため、構造ダンプは不完全です。これ以外は、ダンプはエラーをスローせず、データは最後まで正しくダンプされます。

私はいくつかのコマンドを試しましたが、すべて成功しませんでした:

mysqldump -r /tmp/cbnew2.sql --default-character-set=latin1 --no-tablespaces --skip-lock-tables --quick -u root -p -h Host Dbname contabilita_banche
mysqldump -r /tmp/cbnew2.sql --default-character-set=utf8 --no-tablespaces --skip-lock-tables --quick -u root -p -h Host Dbname contabilita_banche

サーバーのバージョンは4.1.22-log、クライアント5.5.38。ダンプを正しく生成する方法はありますか?

5
Maxxer

「adminer」(php mysql manager)を使用してテーブルの名前を変更しようとしましたが、テーブル名が正しくありませんでした(正直に言うと、まったく表示されていません)。名前を変更しようとしましたが、もちろん新しいテーブル列を作成しました。

最後に、テーブルを再作成する必要がありました。

上記のSHOW CREATE TABLE contabilita_banche\Gからほとんどのスキーマを取得できました。次に、データとともにダンプを取り、CREATE TABLEコマンドをutf-8列名で調整して、新しいダンプを復元しました。

どうもありがとうRolandoご支援ありがとうございます!

2
Maxxer