2015-11-05 45 views
1

当试图通过mysql命令行(mysql -u用户-p < file.sql)将.SQL(MySQL)转储文件从一台服务器恢复到另一台服务器时,我得到下面错误中的一个表:MySQL恢复不接受列注释

syntax to use near 'COMMENT 

的创建它正试图执行的命令是:

CREATE TABLE `cookie` (
    `user_id` bigint(20) NOT NULL, 
    `cloba_id` int(11) NOT NULL, 
    `cookie_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    UNIQUE KEY `FBID` (`user_id`) COMMENT 'facebook ID' 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

通过phpMyAdmin的在创建转储文件服务器,它工作得很好。

我最终排除了列中的所有评论,然后我设法恢复了数据库。有没有一种方法可以使它与这些列注释一起工作?我首先想到这将是一个不同版本的问题,但我在文档中看了一下dev.mysql.com,COMMENT应该与我的服务器版本(5.1.73)兼容,正如您在语法手册中看到的那样:

data_type [NOT NULL | NULL] [DEFAULT default_value] 
    [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] 
    [COMMENT 'string'] 
    [COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}] 
    [STORAGE {DISK|MEMORY|DEFAULT}] 
    [reference_definition] 

任何想法?

+2

索引注释被添加到mysql 5.5中。升级或删除评论。你的文档片段是用于字段而不是索引。 –

回答

1

5.5.3之前的旧版本MySQL只允许对列定义进行注释。它们不允许用于键或索引定义。您将需要删除它们或升级到更新的MySQL版本。

关于MySQL 5.5.3中的注释更改,感兴趣的另一件事是列(索引/键)注释现在允许多达1024个字符而不是仅255个字符。表格评论从60个字符增加到2048个字符。

查看MySQL Create Table docs了解更多信息。另外,为了防止在缺省情况下恢复时使用过程注释(即以#, - 开头或以/ * ... * /括起来的注释),mysql命令将忽略这些类型的注释。为确保它们不被忽略,使用--comments标志。从man文件中看到:

--comments, -c  Whether to preserve comments in statements sent to the server. The default is --skip-comments (discard comments), enable with --comments (preserve comments). 
+0

谢谢。我没有注意到这一点。大声笑,我开始后悔我的“是的,给我CentOS而不是Ubuntu”决定在我的VPS:/ –

+1

你可以看看[这个链接](http://sharadchhetri.com/2014/07/ 31/how-to-install-mysql-server-5-6-on-centos-7-rhel-7 /)安装新版本的MySQL。 – kojow7