- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在尝试加载 mysqldump 文件时收到语法错误。
我的问题有几个部分:
(1)为什么mysql无法正确读取mysqldump输出的文件?
(2) 如何让mysql从一个文件中读入相关数据?
这里是一些细节:
mysqldump -u username -p dbname > mydumpfile.sql
一切顺利(显然)
mysql -u testuser -p testdbname < mydumpfile.sql
仅通过文件的一部分(大约 1/3),然后给出语法错误:
ERROR 1064 (42000) at line 249: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'randomimproperlydisplayingjapanesetext',''),(508715,134707' at line 1
显示为语法错误的文本是在新插入语句开始后不久。
上一行的(大)insert statement 语句没有被输入到数据库中。
数据来自日文数据库,列有 utf8_general_ci 排序规则。
Windows xp 上的 MySQL 版本 5.6.23。
以下是其他相关变量(我认为):
mysql> show variables like '%char%';
+--------------------------+------------------------------+
| Variable_name | Value |
+--------------------------+------------------------------+
| character_set_client | sjis |
| character_set_connection | sjis |
| character_set_database | sjis |
| character_set_filesystem | binary |
| character_set_results | sjis |
| character_set_server | sjis |
| character_set_system | utf8 |
| character_sets_dir | C:\mysql\share\charsets\ |
+--------------------------+------------------------------+
编辑 根据下面的答案,我确定是一个SET NAMES
mysqldump 中的行以将其设置为 utf8。
这是 SHOW CREATE TABLE trouble_table
结果:
CREATE TABLE `trouble_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`version_id` int(11) DEFAULT NULL,
`myutf8column` varchar(100) CHARACTER SET utf8 DEFAULT NULL,
`mysjisenumcolumn` enum('一式','*',[a few other japanese charactes]) CHARACTER SET sjis DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `version_id` (`version_id`)
) ENGINE=InnoDB AUTO_INCREMENT=946033 DEFAULT CHARSET=utf16 `
于是,表字符集utf16(我忘了为什么),一列utf8,一列sjis。在 msyqldump 文件中,我可以读取所有值,因此在转储文件中似乎所有值都以相同的方式编码。
SELECT HEX(mytuf8column)
似乎确认 myutf8column 具有 utf8 编码(以下面提到的代码开头,即 E383xx,Ewxxyy),而 mysjiscolumn 具有以 95 开头的十六进制值,所以我猜它可能是 sjis。
另外,看完this SOV question , 我检查并设置了 max_allowed_packet
成为33554432
, 而不是默认值,但这并没有改变问题。
确实加载的表部分插入的数据没有明显的问题,但数据太多,我无法真正查看数据库数据或 mysqldump 文件并注意到可能导致的任何“奇怪”字符到mysql就憋死了。 (mysqldump 文件超过 50MB,所以以 db 标准来说它并不大,但大到读起来很麻烦,Notepad++ 和 emacs 似乎对此无能为力)
还有一件事,我对更改列排序规则感到紧张,因为我不想丢失任何数据(如果当前编码错误,将其更改为另一种编码是否安全?)。解析原始数据需要很长时间,因此我正在尝试制作备份副本。 编辑 根据下面的回答,我不再对更改排序规则感到紧张,因为它只是比较规则,而是对更改字符集感到紧张。
顺便说一下,如果 mysql 需要简单地跳过一些有问题的行,这没什么大不了的。
最佳答案
在我的例子中,这是由导出和导入 mysql 版本之间的版本差异引起的。我导出的 mysql 是 5.7.x (Ubuntu 16.04),但导入的是 5.5.x (Ubuntu 14.04)。通过 following this guide 将导入升级到 5.7.x 之后, 它奏效了。
关于加载 mysqldump 文件时出现 sql 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29745815/
我定期针对 Drupal 数据库运行 mysqldump,伙计,那些缓存表可能会变得很大。考虑到我在重新加载数据后做的第一件事就是清除缓存,如果我可以完全跳过转储所有这些行,我会很高兴。我不想跳过表创
我知道 exit code = 0 的意思是 No error。 我得到 退出代码 = 2。这是什么意思 ? 在哪里可以看到 mysqldump 退出代码的完整列表? 最佳答案 取自 MySQL 5.
我正在清理这个庞大而困惑的数据库。它包含 500 多个表,这是将 Magento Enterprise 与 Joomla 结合到一个数据库中的结果。 更糟糕的是,有一组 70 多个 Joomla 表根
我正在尝试将大型数据库中的一小部分记录加载到测试数据库中。 你如何告诉 mysqldump 只给你 800 万条记录中的 n 条记录? 谢谢 最佳答案 正如 skaffman 所说,使用 --wher
我的 mysqldump 有问题.. 我知道如何从我的电脑启动 mysqldump 命令到远程服务器并自动将 mysqldump 文件保存在我的电脑中...... mysqldump --user=
这是我的完整 bash 脚本: #!/bin/bash logs="$HOME/sitedb_backups/log" mysql_user="user" mysql_password="pass"
在这个问题上工作了一整天..当我请求该表时,它为我提供了整个数据库.. #!/bin/bash # mysqldump --user root --password=mypw sellnjho_rea
我想知道通过phpmyadmin导出大型数据库和通过mysqldump通过终端导出信息的方式是否有区别。 mysqldump 的运行时间更好? 我想知道优点和缺点。 谢谢。 最佳答案 如果你从 mys
我收到以下错误: mysqldump: [ERROR] unknown variable 'database=myDB1' 当我运行这个命令时: mysqldump -u root -p myDB
我最近将服务器升级到 Debian 9,并将 MySQL 升级到最新版本。我有一个简单的备份脚本,在生产站点上执行任何工作之前运行该脚本,但这一次,在运行脚本时,我遇到以下情况: mysqldump:
解决方法见底 我正在运行 mysqldump 作为通过 cron 作业调用的 php 脚本的一部分。 是否可以从 mysqldump 命令返回 stderr,或者将其分配给可以直接读取的变量?或者是否
尝试通过 MySQL Workbench 转储简单数据库,方法是单击...服务器>数据导出>mydb>开始导出 获取消息:mysqldump 版本不匹配...消息显示这些版本mysqldump.exe
我尝试了其他答案中提到的其他解决方案,例如权限、授予问题、端口号、密码/用户名等。这些都不是问题;它们可能是您的问题,因此需要检查。 配置:在 Win10 上运行 Wordpress,安装了 Mari
我必须从服务器转储数据库,将 .sql 传输到另一台服务器,然后运行以下脚本以使用此语法删除某些行: DELETE wp_posts FROM wp_posts INNER JOIN wp_postm
正在尝试从 MAMP 服务器导出数据库。我试过命令: # mysql_dump -u root -proot db_name > db_name.sql # Applications/MAMP/Lib
我只想转储最新的行。但是当我通过 --where 选项时,它不会转储行。但是当我使用相同的 where 子句执行选择查询时,它返回行。这是我的选择查询: SELECT * FROM abc.`xyz
我用它来将所有数据从 my_database 导出到分隔文本到一个文件夹中 mysqldump -u root -p -t -T /path/to/export my_database --field
我经常使用以下命令通过 ssh 在 AWS RDS 上导出 mySql 数据库: mysqldump -u myUserName -h myDBname.randomcharacters.us-reg
我需要包含数据的 mysqldump,但在数据库中还有几个带有 FEDERATED 引擎的表。 mysqldump 也包括 FEDERATED 表的 INSERT,这是导致“重复条目”错误的原因(因为
mysqldump 在生成转储文件时会转义哪些字符?不幸的是,我找不到任何相关文档,所以我尝试了一下,发现只有双引号、单引号和反斜杠 (',",\) 会被反斜杠转义。 但是还有更多吗,或者有任何可用的
我是一名优秀的程序员,十分优秀!