无来

不管你来还是不来
我都在这里,夜夜点亮
不是为了守候
只是为了做好我自己

0%

一、平时忽略未提交的文件

从未提交过的文件可以用.gitignore
也就是添加之后从来没有提交(commit)过的文件,可以使用.gitignore忽略该文件
该文件只能作用于未跟踪的文件(Untracked Files),也就是那些从来没有被 git 记录过的文件
.gitignore中写忽略文件或文件夹。注意相对路径是项目根数据,文件格式如下

1
2
3
/.gradle/
/.idea/
/local.properties

二、已经Push过的文件

需要删除Git仓库的文件,本址的文件需要保留,并且在以后提交中忽略

1、从本地Git缓存中删除文件

1
2
3
4
//忽略文件 aaa.txt
git rm --cached aaa.txt
//忽略文件夹 abc
git rm -r --cached abc

2、提交到仓库里面

1
2
git commit -m 'delete somefile'
git push

3、修改文件.gitignore,把刚才删除的文件或者文件夹加入.gitignore文件

1
2
/aaa.txt
/abc/

前言

在原来的电脑中,我的 hexo 备份在 GitHub上,除了一个 User Page 用来发布文章以外,还有一个 hexo-backup 的仓库,用来保存 hexo 的源代码。

在我换电脑以后,需要在新的电脑上重新部署 hexo 的环境,由于原来 hexo 的源代码及文稿与发布的仓库位于两个不同的仓库中,导致我需要下载一个仓库,但是要 hexo deploy 到另一个仓库中,这是一个很不合理的项目规划方案。所以,在网上搜索了一些教程以后,我重新规划了 GitHub 上面的代码仓库,用一个仓库同时存放 hexo 项目的发布版和源文件,但是这两个部分位于一个仓库的不同分支中。在以后需要重新部署 hexo 环境的时候,只用从一个仓库中下载代码,就可以获得源代码和发布版。

环境配置

创建 GitHub 仓库

首先点击 New Repository,创建一个新的代码仓库,在填写 Repository name 的时候,格式是 username.github.io (username 是你的 GitHub 账号用户名)。

本地安装环境配置

需要下载的软件有 Git、node.js 和 Hexo ,下载及安装方法不再赘述。

注意,在配置 Git 的时候,最好使用 git config 进行配置,这与 GitHub 在计算 contributions 次数的有关,也是就 GitHub 个人首页上绿色小点,用来统计每个人每天 commit 的次数有关。

在 GitHub 上统计代码仓库 commit 的次数时候,需要同时满足以下三点,才可以记为一次 commit:

  • The email address used for the commits is associated with your GitHub account.
  • The commits were made in a standalone repository, not a fork.
  • The commits were made:
    • In the repository’s default branch (usually master)
    • In the gh-pages branch (for repositories with Project Pages sites)

也就是你的本地 Git 账号需要和 GitHub 账号一致。所以需要通过 git config 来配置本地 Git 的账号:

1
2
git config --global user.name "username"
git config --global user.email "username@example.com"

本地博客搭建流程

本流程与CrazyMilk的文章中的流程有所不同,如果是按照他的流程,在 hexo init 的时候,会删除本地的 .git 文件夹,所在流程上会略有不同。

以我的博客搭建流程为例:

  1. 在 GitHub 上创建 liuhill.github.io 代码仓库
  2. 本地下载和安装 git、node.js,并且使用 git config 配置本地 git 账号
  3. 在本地合适的位置创建 liuhill.github.io 文件夹,作为本地博客根目录
  4. 在本地 liuhill.github.io 依次执行:
    1
    2
    3
    4
    npm install -g hexo 
    hexo init
    npm install
    npm install hexo-deployer-git
  5. 使用 GitHub 提示,将本地文件夹与远程代码仓库连接:
    1
    2
    3
    4
    5
    6
    echo "# shiningdan.github.io" >> README.md 
    git init
    git add README.md
    git commit -m "first commit"
    git remote add origin https://github.com/liuhill/liluhill.github.io.git
    git push -u origin master
  6. 创建 master 和 hexo 分支。因为创建的代码仓库是 User Page,所以 master 分支是作为 hexo deploy 的分支,而 hexo 分支是保存源代码的分支。在 terminal 下执行命令:
    1
    2
    3
    git branch hexo //创建 hexo 分支 
    git push origin hexo //将本地分支 PUSH 到远端
    git checkout hexo //切换本地分支为 hexo
  7. 修改_config.yml中的deploy参数:
    1
    2
    3
    4
    5
    deploy:
    type: git
    repo: https://github.com/liuhill/liuhill.github.io.git
    branch: master
    message: hexo部署
    注意,branch 一定要为 master,因为 User Page 的发布版必须位于 master 分支下。
  8. 修改 GitHub 网页中的配置,将 hexo 分支设置为默认分支。
  9. 依次执行
    1
    2
    3
    git add .
    git commit -m “…”
    git push origin hexo
    提交网站相关的文件
    执行hexo generate -d生成网站并部署到GitHub上

日常发布以及备份

在备份源代码和源文件的时候,依次执行

1
2
3
git add .
git commit -m “…”
git push origin hexo

指令将改动推送到GitHub,此时源代码和源文件是被备份在 hexo 分支上。

再执行hexo generate -d发布网站到master分支上

重新部署

  1. 使用git clone https://github.com/liuhill/liuhill.github.io.git 拷贝仓库(默认分支为hexo)
  2. 在本地新拷贝的 liuhill.github.io文件夹下通过Git bash依次执行下列指令:
    1
    2
    3
    npm install -g hexo
    npm install
    npm install hexo-deployer-git
    (记得,不需要hexo init这条指令)

QUESTION

On my Windows XP workstation, I can find the machine I want to connect to in DNS with nslookup:

1
2
3
4
5
6
nslookup wolfman
Server: dns.company.com
Address: 192.168.1.38

Name: wolfman.company.com
Address: 192.168.1.178

On my Windows XP workstation, I can find the machine I want to connect to in DNS with nslookup:

1
2
3
4
5
nslookup wolfman
Server: dns.company.com
Address: 192.168.1.38
Name: wolfman.company.com
Address: 192.168.1.178

But, when I try to connect to that machine, I get an error telling me that the machine can’t be found (i.e., can’t be looked up in DNS):

1
2
C:\> ping wolfman
Ping request could not find host wolfman. Please check the name and try again.

I am able to connect if I use the IP address directly:

1
2
3
4
5
6
7
8
C:\> ping 192.168.1.178

Pinging 192.168.1.178 with 32 bytes of data:

Reply from 192.168.1.178: bytes=32 time=41ms TTL=126
Reply from 192.168.1.178: bytes=32 time=41ms TTL=126
Reply from 192.168.1.178: bytes=32 time=44ms TTL=126
Reply from 192.168.1.178: bytes=32 time=38ms TTL=126

ANSWER 1

I believe that nslookup opens a winsock connection on the DNS port and issues a query, whereas ping uses the DNS Client service. You could try and stop this service and see whether this makes a difference.

Some commands that will reinitialize various network states :

  • Reset WINSOCK entries to installation defaults : netsh winsock reset catalog
  • Reset TCP/IP stack to installation defaults : netsh int ip reset reset.log
  • Flush DNS resolver cache : ipconfig /flushdns
  • Renew DNS client registration and refresh DHCP leases : ipconfig /registerdns
  • Flush routing table : route /f (this will remove all your gateways until you restart!)

ANSWER 2

Try ping with hostname followed by a dot. So instead of ping wolfman use ping wolfman.

That should get you resolving without having to do workarounds with hosts file, etc.

今天,9岁的女儿自己参加花样游泳集训了,比赛、集训共10天。以前训练总是挨批评,一直抗拒参加集训,现在终于愿意参加比赛了。一上车就认识了新朋友,有小朋友同行,出发的心情不错。

集训出发 新朋友

前几天,顺路送她去课外班补课。考虑她要在那儿呆一整天,中午可能无聊。在车上我说

1
2
3
4
“中午我来找你吃饭吧?”,
“妈妈帮我定了”。
“我中午过来找你玩吧,中午你一个人多无聊”,
“我们老师给我们放电影”。

好吧,是我自作多情了…

在刚出生的时候,我默默的想“我一定会放手,让你自己高飞!” 没想到,她想飞的心思来得这么快~

宝宝

1. windows 测试

命令行输入以下命令:

1
w32tm /stripchart /computer:ntp_server_address

例如:w32tm /stripchart /computer:time.windows.com

2. linux 测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@centos6 ~]# ntpdate -d ntp1.aliyun.com
27 Mar 22:04:38 ntpdate[1049]: ntpdate 4.2.6p5@1.2349-o Wed Dec 19 20:22:35 UTC 2018 (1)
Looking for host ntp1.aliyun.com and service ntp
host found : 120.25.115.20
transmit(120.25.115.20)
receive(120.25.115.20)
transmit(120.25.115.20)
receive(120.25.115.20)
transmit(120.25.115.20)
receive(120.25.115.20)
transmit(120.25.115.20)
receive(120.25.115.20)
server 120.25.115.20, port 123
stratum 2, precision -25, leap 00, trust 000
refid [120.25.115.20], delay 0.07951, dispersion 0.00424
transmitted 4, in filter 4
reference time: e046016e.965c7e00 Wed, Mar 27 2019 22:04:30.587
originate timestamp: e0460177.12bce60a Wed, Mar 27 2019 22:04:39.073
transmit timestamp: e0460177.04f47dc5 Wed, Mar 27 2019 22:04:39.019
filter delay: 0.09312 0.07951 0.08475 0.09390
0.00000 0.00000 0.00000 0.00000
filter offset: 0.004349 0.010768 0.007720 0.019682
0.000000 0.000000 0.000000 0.000000
delay 0.07951, dispersion 0.00424
offset 0.010768
27 Mar 22:04:39 ntpdate[1049]: adjust time server 120.25.115.20 offset 0.010768 sec

3. 国内常用时间服务器地址

  • 210.72.145.44 (国家授时中心服务器IP地址)
  • 133.100.11.8 日本 福冈大学
  • time-a.nist.gov 129.6.15.28 NIST, Gaithersburg, Maryland
  • time-b.nist.gov 129.6.15.29 NIST, Gaithersburg, Maryland
  • time-a.timefreq.bldrdoc.gov 132.163.4.101 NIST, Boulder, Colorado
  • time-b.timefreq.bldrdoc.gov 132.163.4.102 NIST, Boulder, Colorado
  • time-c.timefreq.bldrdoc.gov 132.163.4.103 NIST, Boulder, Colorado
  • utcnist.colorado.edu 128.138.140.44 University of Colorado, Boulder
  • time.nist.gov 192.43.244.18 NCAR, Boulder, Colorado
  • time-nw.nist.gov 131.107.1.10 Microsoft, Redmond, Washington
  • nist1.symmetricom.com 69.25.96.13 Symmetricom, San Jose, California
  • nist1-dc.glassey.com 216.200.93.8 Abovenet, Virginia
  • nist1-ny.glassey.com 208.184.49.9 Abovenet, New York City
  • nist1-sj.glassey.com 207.126.98.204 Abovenet, San Jose, California
  • nist1.aol-ca.truetime.com 207.200.81.113 TrueTime, AOL facility, Sunnyvale, California
  • nist1.aol-va.truetime.com 64.236.96.53 TrueTime, AOL facility, Virginia

  • ntp.sjtu.edu.cn 202.120.2.101 (上海交通大学网络中心NTP服务器地址)
  • s1a.time.edu.cn 北京邮电大学
  • s1b.time.edu.cn 清华大学
  • s1c.time.edu.cn 北京大学
  • s1d.time.edu.cn 东南大学
  • s1e.time.edu.cn 清华大学
  • s2a.time.edu.cn 清华大学
  • s2b.time.edu.cn 清华大学
  • s2c.time.edu.cn 北京邮电大学
  • s2d.time.edu.cn 西南地区网络中心
  • s2e.time.edu.cn 西北地区网络中心
  • s2f.time.edu.cn 东北地区网络中心
  • s2g.time.edu.cn 华东南地区网络中心
  • s2h.time.edu.cn 四川大学网络管理中心
  • s2j.time.edu.cn 大连理工大学网络中心
  • s2k.time.edu.cn CERNET桂林主节点
  • s2m.time.edu.cn 北京大学

原文: (今日头条、抖音推荐算法原理全文详解) https://mp.weixin.qq.com/s/e0KgNOn3vIKn-nc1l-XBqw

1、系统概览

1.1)推荐系统

推荐系统就是拟合一个用户对内容满意度的函数,这个函数需要输入三个维度的变量:

  • 内容特征:提取不同内容类型的特征做好推荐。
  • 用户特征:兴趣标签,职业、年龄、性别等。
  • 环境特征:在工作场合、通勤、旅游等不同的场景,信息偏好有所偏移。推荐系统匹配函数

1.2)推荐系统的目标

  • 可量化目标:点击率、阅读时间、点赞、评论、转发包括点赞
  • 无法直接衡量的目标
    • 广告&特型内容频控
    • 低俗内容打压&频控
    • 标题党,低质,恶心内容打压
    • 重要新闻置顶&强插&加权
    • 低级别账号内容降权

1.3)典型推荐算法

  • 协同过滤模型
  • 监督学习算法Logistic Regression模型
  • 基于深度学习的模型
  • Factorization Machine
  • GBDT

注:需要非常灵活的算法实验平台,可以支持多种算法组合,包括模型结构调整。

1.4)推荐特征

  • 第一类是相关性特征

评估内容的属性和与用户是否匹配.显性的匹配包括关键词匹配、分类匹配、来源匹配、主题匹配等.隐性匹配从用户向量与内容向量的距离可以得出,如FM模型。

  • 第二类是环境特征

包括地理位置、时间。这些既是bias特征,也能以此构建一些匹配特征。

  • 第三类是热度特征

包括全局热度、分类热度,主题热度,以及关键词热度等。内容热度信息在大的推荐系统特别在用户冷启动的时候非常有效。

  • 第四类是协同特征

它可以在部分程度上帮助解决所谓算法越推越窄的问题。通过用户行为分析不同用户间相似性,比如点击相似、兴趣分类相似、主题相似、兴趣词相似,甚至向量相似,从而扩展模型的探索能力。

1.5)模型训练

  1. 线上服务器记录实时特征
  2. 导入到Kafka文件队列中
  3. 客户端回传推荐的label构造训练样本
  4. 根据最新样本进行在线训练更新模型参数
  5. 线上模型得到更新

1.6)召回策略

  • 为什么需要召回策略?
    • 内容量非常大,加上小视频内容有千万级别,推荐系统不可能所有内容全部由模型预估。
    • 召回策略,每次推荐时从海量内容中筛选出千级别的内容库
    • 召回策略最重要的要求是性能要极致,一般超时不能超过50毫秒
  • 召回策略的方案
    • 离线维护一个倒排。key可以是分类,topic,实体,来源等。
    • 排序考虑热度、新鲜度、动作等
    • 线上召回可以迅速从倒排中根据用户兴趣标签对内容做截断,高效的从很大的内容库中筛选比较靠谱的一小部分内容

1.7)推荐系统的数据依赖

  • 推荐模型的特征抽取需要用户侧和内容侧的各种标签。
  • 召回侧需要获取用户侧和内容侧的各种标签。
  • 内容分析和用户标签挖掘是搭建推荐系统的基石。

2、内容分析

2.1 文本分析

  • 推荐系统的应用
    • 用户兴趣建模(user profile): 如:给喜欢阅读”互联网”文章打上“互联网”标签。
    • 帮助内容推荐: “魅族”的内容推荐给关心“魅族”的用户
    • 生成频道内容: “德甲”的内容进“德甲频道”
  • 今日头条抽取的文本特征
    • 语义标签类特征
      • 显式语义特征: 为文章打上语义标签。这部分标签是由人定义的特征,每个标签有明确的意义,标签体系是预定义的。
      • 隐式语义特征:主要是topic特征和关键词特征,其中topic特征是对于词概率分布的描述,无明确意义;而关键词特征会基于一些统一特征描述,无明确集合。
    • 文本相似度特征: 用户反馈最大的问题之一就是为什么总推荐重复的内容。这个问题的难点在于,每个人对重复的定义不一样。
    • 质量相关特征: 判断内容是否低俗,色情,是否是软文,鸡汤?

2.2 头条语义标签的 特征 & 使用场景

  • 分类:user profile; 过滤频道内容; 推荐召回; 推荐特征
  • 概念:过滤频道内容; 标签搜索;推荐召回(Like)
  • 实体:过滤频道内容;标签搜索;推荐召回(Like)

2.3 标签分层

  • 每个层级粒度不一样,要求也有区别
  • 分类体系要求覆盖全,希望任何一篇文章,总能找到合适的分类,精确性要求不高
  • 实体体系不要求覆盖全,只要覆盖每个领域人们的人物、机构,作品,产品即可
  • 概念体系负责表达比较精确,但是有属于抽象概念的语义,也不要求覆盖全

分类的目标是覆盖全面,希望每篇内容每段视频都有分类;而实体体系要求精准,相同名字或内容要能明确区分究竟指代哪一个人或物,但不用覆盖很全。

概念体系则负责解决比较精确又属于抽象概念的语义。

2.4 为什么要语义标签

优点:

  • 隐式语义特征已经可以很好的帮助推荐
  • 语义标签做好的难度和资源投入远大于隐式语义特征
    缺点:
  • 频道,兴趣表达等重要产品功能需要有一个有明确定义,容易理解的文本标签体系。
  • 语义标签的效果是检查一个公司NLP技术水平的试金石

语义标签的效果是检查一个公司NLP技术水平的试金石。

  • 元分类器类型: SVM、CNN、RNN

2.2 图片分析

2.3 视频分析

3、用户标签

3.1 兴趣特征

  • 感兴趣的类别和主题
  • 感兴趣的关键词
  • 感兴趣的来源
  • 基于感兴趣额的用户聚类
  • 各种垂直兴趣特征(车型,体育球队,股票等)

3.2 身份特征

  • 性别

性别信息通过用户第三方社交账号登录得到

  • 年龄

年龄信息通常由模型预测,通过机型、阅读时间分布等预估。

  • 常驻点

常驻地点来自用户授权访问位置信息,在位置信息的基础上通过传统聚类的方法拿到常驻点。
常驻点结合其他信息,可以推测用户的工作地点、出差地点、旅游地点。

3.3 行为特征

  • 晚上才看电视
  • 打开手机时间

3.4 对浏览内容标签进行数据处理策略

  • 过滤噪声。通过停留时间短的点击,过滤标题党。
  • 热点惩罚。对用户在一些热门文章(如前段时间PG One的新闻)上的动作做降权处理。理论上,传播范围较大的内容,置信度会下降。
  • 时间衰减。用户兴趣会发生偏移,因此策略更偏向新的用户行为。因此,随着用户动作的增加,老的特征权重会随时间衰减,新动作贡献的特征权重会更大。
  • 惩罚展现。如果一篇推荐给用户的文章没有被点击,相关特征(类别,关键词,来源)权重会被惩罚。当然同时,也要考虑全局背景,是不是相关内容推送比较多,以及相关的关闭和dislike信号等。

3.5 用户标签挖掘

  • 第一版: 用户标签批量计算框架

    1. Scribe收集原始日志
    2. 导入Kafka文件队列
    3. 导入Hadoop集群
    4. MapReduce Job批量计算
    5. 写入高性能分布式存储系统
    6. 线上读取高性能分布式存储系统
  • 第二版: 用户标签流式计算框架

    1. Scribe收集原始日志
    2. 导入Kafka文件队列
    3. 导入Storm集群
    4. 从高性能存储系统读取base
    5. 基于动作bath更新用户模型
    6. 线上直接读取高性能存储系统
  • 流式计算和批量计算混合使用

    • 大部分user profile采用流式计算

      • 各个粒度的兴趣标签
      • 垂直领域profile
    • 对时效性不敏感的user profile采用Batch计算

      • 性别,年龄
      • 常驻地点

4、评估更新

一个事情没法评估就没法优化

4.1 对推荐系统产生影响的因数

  • 候选内容集合的变化
  • 召回模块的改进和增加
  • 推荐特征的增加
  • 推荐系统架构的改进
  • 算法参数的优化
  • 规则策略的改变

4.2 评估系统要求

  • 完备的评估系统
  • 强大的实验平台
  • 易用的实验分析工具

4.3 推荐系统评估需要注意的问题

  • 兼顾短期指标与长期指标
  • 要兼顾用户指标和生态指标
  • 注意协同效应的影响,有时候需要彻底的统计隔离

4.4 强大实验平台的优点

  • 同时在线的实验多: 每天数百个
  • 高效管理和分配实验流量
  • 降低实验,分析成本,提高算法迭代效率

4.5 人工抽样评估分析

  • 线上实验平台只能通过指标变化推测用户体验
  • 数据指标和用户体验存在差异
  • 重大改进需要人工评估二次确认
  • 头条利用内部和外包团队进行例行的人工抽样评估

5 内容安全

5.1 头条内容安全机制

内容安全机制

5.2 分享内容识别技术

  • 鉴黄模型
  • 谩骂模型
  • 低俗模型
1
注重召回率,准确率甚至可以牺牲一些。谩骂模型的样本库同样超过百万,召回率高达95%+,准确率80%+。如果用户经常出言不讳或者不当的评论,我们有一些惩罚机制。

5.3 泛低质内容识别技术

1
像假新闻、黑稿、题文不符、标题党、内容质量低等等,这部分内容由机器理解是非常难的,需要大量反馈信息,包括其他样本信息比对
  • 低质模型是通过对评论做情感分析,结合用户其它的负反馈信息(举报、不感兴趣、踩)等信息,来解决很多语义上的低质问题,诸如题文不符、有头无尾、拼凑编造、黒稿谣言等
  • 目前低质模型的准确率为70%,召回率为60%,结合人工复审召回率能做到95%

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<div class="pic"><img src="ttt.jpg"></div>

.pic {

width:182px;
height:277px;
display: flex;
justify-content: center;
align-items: center;

img {
//width: 100%;
//height: 4.61333rem;

width: 100%;
height: 100%;
object-fit:cover;
/*object-fit:none;*/ //none则不改变图片原始尺寸
}
}

RSYNC TO EXFAT DRIVE
These options are friendly to sync to/from an ExFAT drive:

1
rsync -vrltD --progress --stats /source/a/ /dest/a

-vrltD
options from -a friendly with EXFAT.

non-ExFAT rsync:
If one uses the standard rsync options like:

1
rsync -a

they don’t work with an EXFAT drive. You’ll get errors like:

1
RSYNC: MKSTEMP … FAILED: FUNCTION NOT IMPLEMENTED (38)

because EXFAT doesn’t understand permissions, owners, or groups.

RSYNC PROGRESS INDICATOR
In general, rsync progress can be observed on a per-file basis using commands starting with:

1
rsync -av --progress

Overall rsync progress can be observed by:

1
rsync -a --info=progress2

1、《阿尔汉布拉宫的回忆》——塔雷加
  这是被尊称为“近代吉他音乐之父”的西班牙著名吉他作曲家兼演奏家塔雷加的一首最有名的代表作品。
  乐曲描绘了作曲家对西班牙格拉纳达城的一座宫殿的印象。
  全曲的旋律从头至尾都用轮指来演奏,同进配有分解和弦的伴奏,颤的效果发挥得淋漓尽致,无论从演奏技巧或是表现意境方面都有相当的深度。既精妙地描画出阿尔汉布拉宫宫殿的辉煌华丽的景致,又给人以深的感受和回想。
不了解吉他的人很难想像是由一把吉他的独奏来完成的。
2、《阿兰胡埃斯协奏曲》——华金”罗德里格
马德里东南30英里有一座小城名叫阿兰胡埃斯,这里原是波旁王朝的夏宫,西班牙作曲家华金"罗德里格60年前创作的一首吉他曲让它名扬天下,名字就是阿兰胡埃斯协奏曲。
整个乐曲充满一种西班牙式的忧伤,绝不同于欧洲其他地方的那些伤感音乐,具有无比伦比的震撼力,被誉为三大吉他协奏曲之一。
3、《大教堂》——巴里奥斯
说到大教堂就不能不提到它的作者巴里奥斯。由于历史的渊源,南美给人的印象首先要跟西班牙挂上钩:激烈热情的西班牙吉他,粗犷奔放的性格和热辣的Tango。虽然其中具有南美的音乐元素,然而从这收标题音乐的题目就可以看出来,不同于南美的传统风格,这是一首具有理性的、对于最高原则的思索和探求的曲目。也许这就是古典吉他的魅力,它可以在不同时空、不同民族、不同文化的人当中引起共鸣。《大教堂》被算做巴里奥斯4类作品中巴洛克风格的作品之一,然而曲子本身展现的对于人性的关怀和强烈的画面通感又使其极具浪漫时期的人文色彩。
全曲共分三部分:
第一部分:D大调本属于节奏明快的调性,却展现出了略带忧郁的感觉。仿佛祈祷的人站在空旷的教堂中央,缓慢的度步,阳光从巨大彩色的玻璃中透过来,使宁静的教堂带上了斑斓而温暖的色调。
第二部分:这是属于天国的声音。庄重的和弦表现出最崇高的、不可违抗的上帝的律令。似乎在描写天堂的同时勾勒出了人间的疾苦。人世的苦难众多,但是低沉、稳健的低音区奏出了坚强甚至有些悲壮的音符:顶着风雨前进:这是我们唯一的选择。这部分是最能够引起人内心的伤感同时又最能给予人力量的一部分。福田好啊。好啊。好的不能用语言形容啊。
第三部分:进入教堂祈祷的人们,男男女女,老老少少。各人都有各人的不幸,但是得到的答复都是相似的:因为上帝的安慰不会因人而异。
4、《华尔兹》——索尔
华尔兹是一种轻快的三拍子舞曲。这一首华尔兹在世界现代的吉他教材中很常见,指法并不难,但是很好听。它可以帮助初学者找到旋律声部和伴奏声部的层次感。
5、《幻想曲》——穆达雷
幻想曲史上最令人激动人心的吉它曲子,穆达雷的幻想曲没有扫弦,没有轮指,只是拨弦,只能靠曲子本身打动人心,但是他做到了,老练的拨弦手法,优美起伏的曲子令人神往。
6、《吉诺诺它》第一号
十分舒缓悠扬的一首曲子,觉得更像是小品,不长,也没有急迫的那种气势,适合人心情平和是来听。
7、《卡门组曲》——比才
法国作曲家比才于1874年创作的歌剧《卡门》,其中前奏曲是该歌剧中最著名的器乐段落,常单独演奏。一般的歌剧序曲都是用交响方式缩写或提示歌剧内容,这首序曲结构简单,仅仅描写了欢乐气氛和剧中次要人物斗牛士的英勇形象。
开始呈示的快板主题选自歌剧第四幕斗牛士上场时的音乐,生气勃勃、充满活力,表现了斗牛士英武潇洒的形象和斗牛场内兴奋活跃的气氛。由于它带有进行曲特点,故又称《斗牛士进行曲》。
接下来乐曲从A大调转为F大调,出现第二幕中《斗牛士之歌》的副歌音调,具有凯旋进行曲特点,坚定有力的节奏和威武雄壮的曲调表现了斗牛士的飒爽英姿。反复时提高八度,使情绪显得更为高昂。之后再现第一部分主题。
结束部分出现卡门的音乐动机,带有不祥的气氛,在弦乐有力的震音背景下,以大提琴为主的乐器奏曲悲剧性主题,暗示悲剧性的结局,最后在强烈的不和协音响中结束。
8、《骷髅之曲》——圣”桑
很鬼魅的一首曲子,一定得配合着大小提琴一起演奏才会有效果。曲子听起来异样的欢快,令人神往,高潮迭起,小提琴部分是高潮,吉它部分作为铺垫。
9、《魔笛变奏》——索尔
  西班牙著名的作曲家和吉他演奏家索尔被后世尊称为“吉他史上的贝多芬”。《莫扎特“魔笛”主题变奏曲》是索尔根据莫扎特的歌剧《魔笛》第一幕第三场的主题所作的变奏曲。
全曲分序曲、主题、五种变奏、尾声等八个部分。各个部分均有不同的细腻技巧及丰富的音乐性格,只有本人是出色的演奏家才能创作出如此发挥乐器特性的器乐曲,此曲是吉他音乐会上的保留曲目,亦常常作为吉他比赛中的规定曲目之一,以此来说明演奏者的技巧水平和音乐素养。可见此曲在吉他曲中的地位之一斑。
10、《拉斯图利亚斯传奇》—–阿尔贝尼斯
  原曲由西班牙作曲家阿尔贝尼斯作于1896-1897年。原系钢琴组曲《西班牙之歌》(Op.232)的第一曲《前奏曲》,但其写法本身就受到吉它演奏法的影响。主要以吉它独奏曲广为流传。
阿斯图利亚斯地区位于西班牙北部坎塔布连山脉北侧,这一地区历史上经历过多次战争,留下许多传说。中轮扫奏法的运用,增强了乐曲前后段落强烈的节奏性和戏剧性。中间部主题的性格与前后部分形成鲜明对比。在徐缓速度上吟唱的中间部主旋律充满内在的激情。《阿斯图利亚斯传奇》也是著名的古典吉他经典保留曲目。
11、《玛祖卡》—–塔雷加
  塔雷加在演奏技法上,尤其在弹弦上塔雷加别开生面。他还使泛音奏法尤其是八度的泛音奏法成为吉他常用的一种演奏技法而丰富了吉他在音色方面的表现性能。
塔雷加创作的吉他曲约八十首,其中《阿尔罕布拉宫的回忆》,《阿拉伯风格随想曲》,《前奏曲集》已成为吉他音乐的古典名作。
此外抒情而高度发挥了吉他乐器独特的表现性能的《晨歌》,《泪》,《阿德丽塔(玛祖卡)》等吉他音乐小品也成为经常演奏大保留曲目。
12、《梦中森林》—-巴里奥斯
巴里奥斯的《森林之梦》是一首对吉他演奏者不论是技巧(尤其是轮指的技巧)上,还是音乐上进行全面考验的曲子。   
13、《莫扎特小夜曲》—-莫扎特
莫扎特的音乐清明高远,乐天愉快,淳朴优美,其挚温暖,有如天籁一般。常常被誉为“永恒的阳光”。SPring Spring (春泉)。莫扎特在严酷命运的摧残之下默默地承受着、孕育着、奉献着……象殉道的使徒般唱着温馨甘美的音乐安慰着自己,安慰着整个世界。
14、《平安夜》—-弗朗兹”格鲁贝尔
格鲁贝尔的这首平安夜,也是异常出名的古典吉他名曲。平安夜降临前听着如此婉转,神往的吉它曲子,不禁期盼来年的美好,也让你思绪万千,魂牵梦绕。其中的轮指虽然不多却也异常好听,特别喜欢结尾。
15、《西班牙舞曲》—-格拉纳多斯
在那部举世闻名的芭蕾剧《天鹅湖》里面,柴可夫斯基引用了大量的各个国家的民族旋律,其中有西班牙、意大利、波兰甚至中国旋律。而这首西班牙舞曲是里面非常热辣的一段,节奏飞快。
16、《西西里舞曲》—-雷史毕基
西西里舞曲也是相当动听,似乎能将我们带到中古世纪里的意境中,非常地优雅安逸。
17、《月光狂想曲》
改编的月光狂想曲,由吉他和着钢琴的声音,表现出寂静的夜晚明媚的音乐光下作者澎湃的思绪,倾吐着内心的感受,确实适合晚上独奏。
18、《忧伤圆舞曲》—-西贝柳斯
芬兰作曲家西贝流士(J. Sibelius)宛如小型交响试的「忧伤圆舞曲」(Valse Triste, Op.44-1, 1904)原本是他为妻舅Armas Jarnefelt的剧作【死神】(Kuolema)谱写的一段配乐,以伴隨死神趁著垂死老妇隨伺的儿子睡著之际,化身做其亡夫邀舞的情节;主題动机以相當隐喻的旋律展开預示死亡,中段的相当甜美的旋律延伸出高昂的情绪,象徵与亡夫相逢的喜悅,最初的阴沉旋律最后仍接管了一切,末尾三個不安的和弦意味死神在儿子醒來的那一刻,帶走了他的母亲。这种摻杂哀伤与欢乐的情绪正是人生的最佳写照,加上此曲沙龙味十足,出版后成了当时欧洲咖啡屋的热门曲目。
19、《月光》—-索尔
作者是19世纪杰出的吉他艺术家费尔南度";索尔,该曲指法变化不多,演奏速度较慢,技术难度不高,是首容易弹奏的曲子。
但该曲展现了一幅田野、河流、村庄在朦胧的月光下,万籁俱寂、大地一片银光的美丽画面,它与贝多芬的钢琴曲《月光》有着异工同曲之妙,展现给人们一幅梦幻般迷人的景色。索尔被誉为“吉他史上的贝多芬”是受之无愧。《月光》也成为了古典吉他曲中的不朽名曲。
20、《爱的罗曼史》—-叶佩斯
  《爱的罗曼史》这首乐曲,主旋律取材于西班牙传统民谣。1952年,法国影片《被禁止的游戏》的导演,邀请西班牙著名吉他演奏家叶佩斯,为这部影片配乐。
耶佩斯别出心裁,只采用一把吉他为整部影片配曲,并且由他一人独奏。该影片的主题音乐就是这首《爱的罗曼史》。影片《被禁止的游戏》上映以后,《爱的罗曼史》广为流传,并成为所有知名吉他演奏家的保留曲目。
乐曲优美纯朴的旋律与清澈的分解和弦完全溶为一体,充满温柔和浪漫的气息,《爱的罗曼史》甚至成为吉他的同义词,是吉他曲中的一首不朽名作。
21、《悲伤西班牙》—-尼古拉﹒德﹒安捷罗斯
一首同样忧伤但动听的西班牙吉他曲
22、《镜中的安娜》—-尼吉拉.德.安捷罗斯
浪漫柔美得吉他曲《镜中的安娜》,这首名曲是法国吉他大师尼吉拉.德.安捷罗斯演奏的。尼古拉以此曲一举成名,独特的弹奏将吉他滑音的魅力表现得淋漓尽致,分解和弦伴奏富有动感,與旋律有機的结合,给人以心旷神怡的感受,使人们越聽越能更深刻地理解它,是一首極其美丽的吉他曲。
23、《卡尔卡西练习曲》—–卡尔卡西
在古典吉他的练习曲中,卡尔卡西的练习曲占有相当的地位。而卡尔卡西的25首练习曲,作品第60号,则是卡尔卡西的代表作,也是学习古典吉他的学生从初级向中级迈进的重要练习曲目。这首乐曲就选自其中的第3号A大调《小行板》。由带再现的单二部曲式构成这首乐曲,用分散和弦的三连音贯穿全曲,力度的强弱变化突出。
24、《绿袖子》―――英国民谣
绿袖子,是一首英国民谣,在依丽莎白女王时代就已经已广为流传,相传是英皇亨利八世所作(他是位长笛 家),根据19世纪英国学者威廉";查培尔(William Chappell)所做的研究资料指出,《绿袖子》的旋律最早是记录在16世纪末英国著名的鲁特琴曲集《WilliamBallet\’s Lute Book》,歌词部份则出现在1584年。然而这首歌曲真正广为流传开来,则是在英国作曲家约翰";盖伊(John Gay)将它编入为了对抗意大利歌剧所创作的 《乞丐歌剧》(The Beggar\’s Opera,1728)中。
这首民谣的旋律非常古典而优雅,是一首描写对爱情感到忧伤的歌曲,但它受到世人喜爱的层面却不仅仅局限在爱情的领域,有人将它换了歌词演唱、也有人将它作为圣诞歌曲,而它被改编为器乐演奏的版本也是多不胜数,有小品、有室内乐、有管弦乐…,而这其中又以上述的《乞丐歌剧》和英国作曲家佛汉威廉斯(Vaughan illiams)所写的《绿袖子幻想曲》(“Fantasia on Greensleeves”)最具代表性。
在《绿袖子》的诸多乐器版本中,最能表现此曲略为凄美的情境,除了最早的鲁特琴版本、吉他版本一直以其独特的音色占有独特的表现地位。
25、《雨滴》—-林塞
《雨滴》是一首著名的典型吉他曲,它描写了雨过天睛这后,漫步于林中小径,聆听枝尖叶梢滴水的情景.全曲没有特别艰深的技巧,然而它所能表达的情绪与装饰音的效果,除了吉他这外,没有任何一种其它乐器代替得了.演奏时速度自由流畅,慢而不拖,快而不乱,形成自然地流动。
26、《悲伤礼拜堂》—-Vicente Gomez
作者此曲是为了献给自己的父亲,所以比较庄重,但也藏着深情,乐曲缺少了以往那种欢快的气氛,转而像是一种陈述,一种表达,一种怀念,不多说了,自己听听吧。
27、《泪》—-塔雷加
这是塔雷加的十分脍炙人口的小品之一。全曲仅有十六小节,但仍然发挥了吉他音色的多彩性。通过对吉他六条弦的交替弹奏,典型地表露在小品中追求吉他音调色彩的塔雷加的风格。优美的旋律并非是深沉的哀泣,更像是天真的孩子流出快乐而兴奋的眼泪。
28、《小罗曼史》—-路易斯 华歌
露伊丝"娃可(Luise Walker, 1910-1998),1910年出生于奥地利维也纳,为20世纪吉他乐史上最具代表性的女性演奏家之一。她在八岁时开始学习吉他,不久后就展现出惊人的天赋。14岁举行生平第一次的独奏会,观众为之疯狂,随即很快在欧洲名声大振,并开始以职业演奏家的身份应邀到欧美各国演出。
《小罗曼史》是露伊丝的作品之一,也是深受许多学生喜爱的吉他小品。以往曾经有文章介绍说此曲是讲述一个失恋少女的故事,其故事虽然缠绵悱恻,其真实性却有待推敲。
全曲分为A,B,C三个段落,每一段落均有反复,后面有一段再现(A )段的尾奏(coda),所以可以称为是单纯的三段体曲式。
乐曲一开始的A段(6/8拍子),这是一段酷似维拉罗伯士(H.Villa Lobos)<<第一号前奏曲>>的主题,过去就曾见到有学生在音乐会上将这两首作品“混为一弹”,确实令人有些啼笑皆非。在这一段中,主题以“模仿大提琴”的效果在5、6弦上缓缓的唱出略微感伤的旋律,谱上德文写 Getragen Mitviel Ausdrucksvoll,其意就是“非常有感情地 ”。
乐曲进入B段后,节奏转为4/4拍子,乐谱上提示出Lebhaft(活泼生动)的演奏要求,所以这一段的情绪明显地要比A段来得轻松、活泼许多,使人感受到盎然的蓬勃朝气。
而在接下来的C段,节奏仍然维持在4/4拍子,这是一段全部为三连音分解和弦作成的主题,其中所运用的和声及旋律,又与《爱的罗曼史》一曲有着几分神似,充分地表达出吉他无穷的魅力。乐曲最后的尾奏短暂地再现了 A段的主题,随后以四个中止式的和弦简洁有力地结束全曲,整首作品优雅细致、极具抒情色彩。
29、《大霍塔舞曲》 —-塔雷加
泰雷加一生创作的大量作品中有不少是不朽名作。他的绝大多数作品都是以突出吉他的音乐性、抒情性为主,唯独《大霍塔舞曲》炫耀了吉他各种各样的技巧,包括许多特殊技法:快速半音阶,琶音,分解和弦,揉弦,轮指,上下行涟音奏法,滑音奏法,靠弦与不靠弦奏法,泛音奏法,左手单手涟音奏法,大鼓奏法,小鼓奏法,单簧管奏法,大管(巴松管)奏法等等。可以说这支曲子几乎包括了古典吉他全部技法,弹奏这首乐曲需要相当的功底才能真正应付自如。
30、《樱花变奏曲》—–横尾幸弘
日本名谣,横尾幸弘改编为《樱花变奏曲》,分前奏、主题、3个变奏、尾声6个部分。
31、《大序曲》—-朱利亚尼
弹奏朱里亚尼的《大序曲》,需要有非常熟练的技巧和高度激动的热情,才能把这首曲子表现得淋漓尽致。
大序曲开始是15小节的序奏,a小调,4/4拍,行板,可分为三段,前4小节为第一段,乐曲一开始的第一个主和弦就给人以强有力的乐队全奏的感觉,然后是分解和弦,渐弱之后到第二小节第二拍是一个突强的和弦,接下来第三小节是很弱的、模仿木管乐器演奏的分解属七和弦。到第四小节第二拍,又是一个突强和弦,形成序奏第一段的小高潮。
序奏的第二段是个过渡句,在力度上明显地由弱到强,这三小节的过渡引出了序奏的第三小段。序奏的第三小段使用不断重复的低音加上此起彼伏的分解和弦,把序奏引向高潮,然后又渐慢、渐弱,一直到序奏的结尾。
32、《小夜曲》—–舒伯特

小夜曲这是舒伯特短促的一生中最后完成的独唱艺术歌曲之一,也是舒伯特最为著名的作品之一。此曲采用德国诗人莱尔斯塔勃的诗篇谱写成。“吉他是非常美妙的乐器,然而,能了解其中奥妙者,则寥寥无几”,这是舒伯特的一句话。他给我们留下了非常美妙的吉他室内乐作品,如由吉他、横笛、中音提琴及大提琴演奏的四重奏就是这一首作品。

33、《少女的祈祷》—–巴达捷斯卡·太克拉
  《少女的祈祷》是一首由钢琴经典小品改编的古典吉他曲。该曲作于1859年,初刊登在法国巴黎一家音乐杂志的副刊上,但很快就不胫而走,成为畅销一时的名曲,此后相继以八十余种不同版本风行全球。
作者芭达捷芙斯卡是一位女钢琴家,她生于波兰首都华沙,二十四岁时就过早地离开了人世,留给我们的只有这一首名曲。虽然世人对于本曲的作曲经过已无从知晓,但这首乐曲在形式上只不过是简单的变奏曲,却由于命名为《少女的祈祷》而蜚声世界,久盛不衰,也许应归功于作曲者的匠心独具,抑或是出版商的精明,总之,这不能不说是音乐史上的一个奇迹。
乐曲的结构极其简单,为速度适中的行板,以下行音为中心的四小节前奏之后,乐曲呈现出温婉而幽丽的主题;此后是主题的四种变奏形式,最后一个变奏以三连音符为主,饱含热情,和声只是一些属七和弦和主三和弦而已。本曲形象单纯、手法朴素。俄国杰出的文学家契诃夫曾在他的著名剧作《三姐妹》中引用此曲作为配乐。
34、《阿拉伯风格绮想曲》—–塔雷加
《阿拉伯风格绮想》,也是有近代"吉他音乐之父”之称的塔雷加的代表作品之一,曾被后人称赞为“吉他演奏技术与音乐表现最合理的结合”。
全曲中小夜曲风格的主题与变化的旋律交替出现。悠然自得的主旋律和华彩乐段几乎扩展到吉他的全部音域。充分发挥了吉他六根弦各个音区的不同音色特点,表现了吉他魅力之所在。
塔雷加和别的古典派作曲家不同,很少写奏鸣曲或协奏曲等室内作品,而专注于吉他小品之作曲和编曲,这首曲子中飘忽变化的旋律,表现了抒情悠扬的小夜曲风格,使人在广阔音域中欣赏到吉他的美妙的音色。
35、《最后的颤音》—-巴里奥斯
巴里奥斯的《最后的颤音》,旋律优美、神秘悠远而带有沉思意境,在潺潺流水般的轮指下,像是悠悠地诉说着巴里奥斯生平的故事。
36、《阿狄利达》—-塔雷加
阿狄利达与《泪》一样,学习塔雷加的初学者必须学习《阿狄利达》。此曲以较缓慢的速度演奏,曲中在明朗歌唱的部分采用高音部的滑音演奏法,这是吉他以外乐器所无法表现的。
37、《卡伐蒂娜》—-史坦利 梅耶
  与另一只吉他名曲《爱的罗曼斯》有惊人的异曲同工之妙。这只乐曲出自英国作曲家斯坦尼.麦尔斯的笔下。在电影《猎鹿人》中,导演邀请了享有“吉他王子”美誉的吉他演奏家约翰.威廉斯(John williams)来担任配乐演奏。乐曲在电影放映之后一举风靡全球。
“卡伐蒂那”原意是指短小的抒情歌曲,在器乐上是指旋律优美动听的小品。这只乐曲也正是这样一只曲子。乐曲在轻柔的分散和弦的伴奏下奏出舒缓如歌的旋律,意境温柔而浪漫,充满了向往与憧憬,最后在无穷的眷恋中结束了全曲。这只迷人的乐曲深受人们的喜爱,但涉及到的技巧内容要远比《爱的罗曼斯》复杂的多。
38、《罗密欧与朱丽叶》—–普罗柯菲耶夫
一个传统的爱情故事,用一段音乐就真实地表现出来了。于是《罗密欧与朱丽叶》的主题很快风靡全球,并被改编成钢琴、小提琴等多种音乐形式。现在,我们不妨从吉他中去感受这段忧郁的旋律……
39、《小行板圆舞曲》—–卡诺
西班牙吉他演奏家安东尼";卡诺(Antoni Cano,1811-1897)生于洛尔卡。卡诺早年学医,取得外科医生资格后回故乡行医数年。同时学习音乐。此后,曾在宫廷演奏并任职。1813年索尔由于政治原因离开祖国,流亡巴黎。在巴黎他得到凯鲁比尼(Linsi Cherabini,1760-1842),梅于尔(Etienne-Nicolas Aehul,1763-1817),贝尔东(Henri Montan Berton,1767-1844)等好友的热烈支持。于是这位失意的军人,又在诸友的劝慰下,再度重返艺术家的生涯。
40、《追想曲》 —–阿兰布拉
阿兰布拉的《追想曲》被赞为历史上最浪漫的追想曲,记得以前上海每天早上有一个广播,主持人是裴子安,她主持的节目背景音乐放的一直是这首歌曲,确实是很优美。
41、《随想曲第24号》——帕格尼尼
闻名于世的“二十四首随想曲”是浪漫时期“琴魔”帕格尼尼的小提琴曲集,由于帕格尼尼亦是一位吉他演奏者,其作曲思维也受到吉他演奏法的影响,所以这二十四首随想曲改编为吉他作品也很自然与小提琴比各有千秋,其中第二十四首无论是小提琴还是吉他都演奏的较多,它的一首变奏曲作曲手法很有新意、技巧高难,“琴魔”狂傲之气尽现无遗。
42、《美人鱼小夜曲》——-那卡巴亚西
听着这首《美人鱼小夜曲》仿佛来到了丹麦那个童话世界,来到了海边看到了那个美人鱼雕像。而且,本曲子需要颤音技巧;《美人鱼小夜曲》的轮指全部是轮一弦,使得轮指难度相对较低,同时它的左手没有太难的指法,不会成为演奏上的障碍。而《阿尔罕布拉宫的回忆》则不同,上来就是轮指轮二弦,这样声音不易出来,连贯性也不易弹好。

本文介绍mysqldiff工具来比较数据表结构,并生成差异SQL语句。

mysqldiff类似Linux下的diff命令,用来比较对象的定义是否相同,并显示不同的地方。

如果要比较数据库是否一致,可以用另外一个工具:mysqldbcompare(点击查看教程)。

以下是mysqldiff的用法。

1 安装

mysqldiff是MySQL Utilities中的一个脚本,默认的MySQL不包含这个工具集,所以需要独立安装。

MySQL Utilities下载地址:http://downloads.mysql.com/archives/utilities/。
Windows系统中需提前安装“Visual C++ Redistributable Packages for Visual Studio 2013”,下载地址:https://www.microsoft.com/en-gb/download/details.aspx?id=40784。
Linux系统在下载页面选择对应发行版。

2 语法

mysqldiff的语法格式是:

1
$ mysqldiff --server1=user:pass@host:port:socket --server2=user:pass@host:port:socket db1.object1:db2.object1 db3:db4

这个语法有两个用法:

1
2
3
4
5
6
7
8
9
10
11
12
db1:db2:如果只指定数据库,那么就将两个数据库中互相缺少的对象显示出来,不比较对象里面的差异。这里的对象包括表、存储过程、函数、触发器等。
db1.object1:db2.object1:如果指定了具体表对象,那么就会详细对比两个表的差异,包括表名、字段名、备注、索引、大小写等所有的表相关的对象。
接下来看一些主要的参数:

--server1:配置server1的连接。
--server2:配置server2的连接。
--character-set:配置连接时用的字符集,如果不显示配置默认使用character_set_client。
--width:配置显示的宽度。
--skip-table-options:保持表的选项不变,即对比的差异里面不包括表名、AUTO_INCREMENT、ENGINE、CHARSET等差异。
-d DIFFTYPE,--difftype=DIFFTYPE:差异的信息显示的方式,有[unified|context|differ|sql],默认是unified。如果使用sql,那么就直接生成差异的SQL,这样非常方便。
--changes-for=:修改对象。例如--changes-for=server2,那么对比以sever1为主,生成的差异的修改也是针对server2的对象的修改。
--show-reverse:在生成的差异修改里面,同时会包含server2和server1的修改。

3 范例

先创建两个表。

use study;

create table test1(
id int not null primary key,
a varchar(10) not null,
b varchar(10),
c varchar(10) comment ‘c’,
d int
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=’test1’;

create table test2(
id int not null,
a varchar(10),
b varchar(5),
c varchar(10),
D int
)ENGINE=myisam DEFAULT CHARSET=utf8 COMMENT=’test2’;
不使用–skip-table-options,

mysqldiff –server1=root:root@localhost –server2=root:root@localhost –changes-for=server2 –show-reverse –difftype=sql study.test1:study.test2

使用--skip-table-options

如果需要生成SQL文件,加上输出就可以了:

1
mysqldiff --server1=root:root@localhost --server2=root:root@localhost --changes-for=server2 --show-reverse --difftype=sql study.test1:study.test2 > output.sql

说明:执行MySQL语句时可能会遇到这样错误:`Error 1054 - Unknown column ‘name’ in ‘aspect’``

这是因为mysqldbcompare生成的ALTER语句中,用逗号,拼装了多条ADD、CHANGE等语句,如果这些语句还包含AFTER关键字,就会提示这个错误并中断执行MySQL语句。解决的办法就是:去除AFTER及其后面的条件。

这可能是MySQL的一个Bug,详情参考:http://bugs.mysql.com/bug.php?id=34972http://bugs.mysql.com/bug.php?id=60650。