我正在使用Adminer转储数据库并将其移至新数据库。两个数据库都在同一MySQL服务器5.5.5-10.1.41-MariaDB-0 + deb9u1上。两个数据库都使用latin1_swedish_ci
归类,如Adminer中所示。
这些随机字符串出现在数据库表中,即bs00fgcb
代表名称,hgaibbsf@example.org
代表电子邮件等。
当然,这些数据在导出数据库之前在应用程序前端正常显示,但是在导入到其他数据库并与其他应用程序一起查看后,在上方显示为垃圾。
在我导入新数据库之前,使用文本编辑器使用UTF-8进行查看时,此垃圾数据会出现在数据库转储中。没有其他数据似乎已损坏。
如果在文本编辑器中查看数据库转储之前先导入它,则会得到相同的垃圾数据。我已尝试多次导出和导入数据库。
这是导出文件头:
-- MySQL dump 10.15 Distrib 10.0.36-MariaDB,for debian-linux-gnu (x86_64)
--
-- Host: localhost Database: example_sql
-- ------------------------------------------------------
-- Server version 10.0.36-MariaDB-0ubuntu0.16.04.1
/*!40101 SET @OLD_CHARactER_SET_CLIENT=@@CHARactER_SET_CLIENT */;
/*!40101 SET @OLD_CHARactER_SET_RESULTS=@@CHARactER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS,UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE,SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES,SQL_NOTES=0 */;
这似乎在导入时为每个表集调用一个字符:
DROP TABLE IF EXISTS `example_table`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
为什么在导出或导入时获得此车库数据?发生在哪里?
在导出之前,我不想尝试转换活动应用程序正在使用的数据库表排序规则。
我在一个导入的表上使用了select convert(binary convert(field_name using latin1) using utf8) from table_name
,但是它什么也没做。