部署 部署 Rails 应用时出错,大家来看看出错原因,谢谢!

geekontheway · 2011年12月13日 · 最后由 dreamrise 回复于 2012年06月06日 · 3309 次阅读

#cap deploy:cold 的时候报错

mysql2::Error: Invalid default value for 'country': CREATE TABLE ship_addresses (id int(11) DEFAULT NULL auto_increment PRIMARY KEY, user_id int(11), country varchar(255) DEFAULT '中国', state varchar(255), city varchar(255), district varchar(255), address varchar(255), contact_name varchar(255), mobile varchar(255), telephone varchar(255), memo varchar(255), created_at datetime, updated_at datetime) ENGINE=InnoDB

服务器环境是 ubuntu10.04 服务器上/etc/default/locale 中的编码设置是 LANG="en_US.UTF-8" /etc/mysql/my/cnf中已经设置了utf8编码 ·[client] default-character-set=utf8 ·[mysqld] default-character-set=utf8

mysql> show variables like 'character%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | # | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+

对已经创建好的数据库后 再更改配置 不会改变该数据库的字符集。 需要 alter database mydb character set utf-8; 另外不知道 default-collation=utf8_general_ci 是不是也需要设定一下。

看看你的表的字段编码是不是 UTF-8

我建议默认值不要写到 migrate, 写到 model -> before_save; 这样有利于数据结构 与 数据分离,方便以后修改。

正确的语句应该是 alter database mydb character set utf8 COLLATE utf8_unicode_ci ;

需要 登录 后方可回复, 如果你还没有账号请 注册新账号