古いデータベースを引き継いでいます。ダンプからのリカバリテストの実行中に、テーブルが誤ってバックアップされていることがわかりましたが、テーブル定義が切り捨てられています。
ライブデータベースを見ると、名前に列名特殊文字を含むが見つかりました。つまり、列名は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
。ダンプを正しく生成する方法はありますか?
「adminer」(php mysql manager)を使用してテーブルの名前を変更しようとしましたが、テーブル名が正しくありませんでした(正直に言うと、まったく表示されていません)。名前を変更しようとしましたが、もちろん新しいテーブル列を作成しました。
最後に、テーブルを再作成する必要がありました。
上記のSHOW CREATE TABLE contabilita_banche\G
からほとんどのスキーマを取得できました。次に、データとともにダンプを取り、CREATE TABLE
コマンドをutf-8列名で調整して、新しいダンプを復元しました。
どうもありがとうRolandoご支援ありがとうございます!