菜鸟自学lamp笔记三

by kevin 5. 十一月 2014 23:16 >
碰到一个恶心的问题: 无法保存包含中文的字符串,查了很久,就懂的是字符集的问题。 mysql的字符集在server,database,table,column都可以定义。 查看字符集: 数据库级别 1: SELECT default_character_set_name FROM information_schema.SCHEMATA S 2: WHERE schema_name = "schemaname"; 表级别 1: SELECT CCSA.character_set_name FROM information_schema.`TABLES` T, 2: information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA 3: WHERE CCSA.collation_name = T.table_collation 4: AND T.table_schema = "schemaname" 5: AND T.table_name = "tablename"; 列级别 1: SELECT character_set_name FROM information_schema.`COLUMNS` C 2: WHERE table_schema = "schemaname" 3: AND table_name = "tablename" 4: AND column_name = "columnname"; 修改数据库字符集: 1: ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...]; 把表默认的字符集和所有字符列(CHAR,VARCHAR,TEXT)改为新的字符集: 1: ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE ...] 只是修改表的默认字符集: 1: ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name [COLLATE...]; 修改列的字符集: 1: ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name [COLLATE ...];

Tags: ,

lamp

chicagoboss加mysql小记(2)

by kevin 4. 十二月 2012 00:12 >
chicagoboss默认的使用poolboy实现mysql连接池,但是连接池的最大连接数只有10,这个可以需要通过修改源代码boss_db_sup.erl(line:19)中的max_overflow。 使用连接池连接mysql,如果服务器设置了tcp_keepalive_time,那么如果一段时间后,如果了某个连接没有数据交互,相应的socket端口会被关闭,更糟糕的是无论是mysql的服务端,还是应用客户端,都不知道该socket已经关闭,下次请求是会提示"socket is closed",而且无法重新打开。解决的办法是修改mysql_recv.erl(line:98),添加tcp连接选项{keepalive, true},显式要求连接不断开。 chicagoboss支持在每个action执行之前,执行before_{action},执行之后,执行after_{action}。before_{action}还是比较好用的,after_{action}就很鸡肋了,因为你能处理的只有html,而不是一个action result,所以这个需要自己修改boss_web_controller.erl去扩展。 mysql中的date类型,无法被chicagoboss转换成有效的数据类型,使用datetime类型或者可以尝试修改boss_record_lib.erl的convert_value_to_type方法。 chicagoboss使用Django模板引擎,所以无法调用带参数的服务端方法。但也有个好处,支持模板继承。 boss_rebar.erl存在bug,boss.config中配置vm_name,如果是dev启动vm_name,则添加为启动参数-name,如果是正常启动,则为-sname。可以修改start_cmd方法和stop_cmd方法解决。 利用view生成html。  创建一个view,会生成一个{project}_view_{folder}_{filename}_html.beam文件 调用{project}_view_{folder}_{filename}_html:render(Vars)方法,返回{ok,[Binary]} 其中Vars=[{key, Value}], Binary=<<Html>>,需要生成html的时候可以这样使用。 mochiweb中的处理进程数,可以在mochiweb_socket_server.erl中修改参数acceptor_pool_size,默认为16。

ChicagoBoss加mysql小记(1)

by kevin 11. 十一月 2012 05:07 >
公司新项目,使用基于erlang的mvc框架chicagoboss,数据库选择mysql。写了一个月的代码,记录些细节的东西。 将mysql表映射成model的功能,在boos_db_adapter_mysql这个模块中实现。 数据库的每张表,都需要id字段,而且字段类型必须是整形。当然,可以通过修改源码去掉这个约束(研究中)。 表名必须是严格复数格式,例如:order->orders, man->men。(ps:inflector:pluralize方法存在bug) 数据库中的外键字段,要命名成{talbe_name}_id,table_name为主表名字。 实体属性的定义遵循Pascal命名(Word1Word2),同时对应数据库字段名word1_word2

打赏请我喝果汁咯

支付宝 微信

关于我

80后,单身,平庸的程序员。

喜欢看书,乐于交友,向往旅游。

遇建Kevin

FluentData交流群:477926269

Fluentdata