本篇主要记录一些小技巧或者开发过程中遇到的小问题和解决方案。这些问题实在太小了而且大部分可能和代码没有关系,不好每次都单独列一篇文章,所以放到一起了。
在eclipse中设置字体
在eclipse中设置 Windows->Preferences->General->Appearance->Color and Fonts->Basic->Text Font->Edit->脚本(R) 选择 中欧字符
后中文字体的显示能够更好看些。
处理 nginx + php 遇到后端返回413错误
php 默认上传文件大小限制为 2M,如果超出 2M 你需要修改 php 配置文件 php.ini 里面的参数
1 | post_max_size = 128M ## (表单提交的最大限制,此项不是限制上传单个文件的大小,而是针对整个表单提交的数据进行限制) |
需要保证 post_max_size >= upload_max_filesize ,也就是前者不小于后者。修改之后一定要重启 php-fpm (service php-fpm restart)。
除了修改 php 配置,你也需要修改nginx配置文件 nginx.conf
打开 nginx 配置文件 nginx.conf,找到 http{} 段,在其中添加一行配置:
client_max_body_size 128m; 其中 128m 可以根据需要上传文件大小自行设定。
修改之后一定要重新载入 nginx (service nginx reload)。
导入/导出 csv文件到mysql
导入
需要表存在且字段与csv文件中的相同
1 | LOAD DATA LOCAL INFILE '${csv文件路径}' |
导出
1 | LOCK TABLES ${数据库表名} read; |
导出csv文件到mysql报错
Error 1148
如果在执行语句时报错 Error 1148 MySQL The used command is not allowed with this MySQL version
可能是因为MySQL的安全策略阻止读取本地文件,可以通过以下方法解决:
- Use –local-infile=1 argument on the mysql commandline:
When you start MySQL on the terminal, include –local-infile=1 argument, Something like this:
1 | mysql --local-infile=1 -uroot -p |
Then the command is permitted:
1 | Query OK, 3 rows affected (0.00 sec) |
- Or send the parameter into the mysql daemon:
1 | mysqld --local-infile=1 |
- Or set it in the my.cnf file (This is a security risk):
Find your mysql my.cnf file and edit it as root.
Add the local-infile line under the mysqld and mysql designators:
1 | [mysqld] |
Save the file, restart mysql. Try it again.
- The main reason why we are using the LOCAL keyword is explained in the MySQL manual. On the other hand, you do not need the FILE privilege to load local files. So if you in fact do have file access to the server then try to skip using the word “LOCAL” in SQL query, and instead copy the file to the server and the directory mysql/data/[tablename].
Error 1290
如果在执行语句时报错 [Error Code] 1290 - The MySQL server is running with the --secure-file-priv option
说明参数secure-file-priv 可能有问题
执行以下语句1
SHOW VARIABLES LIKE "secure_file_priv";
可以看到
1 | secure_file_prive=null -- 限制mysqld 不允许导入导出 |
可以在 my.ini(windows) 或 /etc/my.cnf(linux) 文件中的[mysqld]节点添加secure_file_priv=’’,然后重启mysql服务
启动mysql报错error: 11
如果在启动mysql时遇到了 [ERROR] InnoDB: Unable to lock ./ibdata1, error: 11
说明 ibdata1 文件被其他的进程占用 或者 磁盘空间目录不足,有以下解决方案:
- 查看磁盘空间情况
1 | df -h |
- 查看系统 mysql 相关进程
1 | ps -eaf | grep mysql |
如果语句执行正常但是返回 0 row(s) affected
,查看一下csv中的字段是否是否与表中的字段一致,区分大小写;查看一下csv文件的分隔符的设置是否正确。
处理 mongoose 中 bson MODULE_NOT_FOUND 相关报错
node.js 在使用 mongoose时报错 [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND'
参见 https://github.com/Automattic/mongoose/issues/3436
应该是mongoose版本问题,理论上升级到最新版本可以解决,也可以按照以下步骤解决
- 更改 bson 引用
找到 module mongodb ..node_modules\mongodb\node_modules\bson\ext\index.js
改变bson引用的路径改为1
bson = require('../build/Release/bson');
或1
bson = require('../browser_build/bson');
1
bson = require('bson');
- 更改mongoose版本
将原有的mongoose升级为"mongoose ": "~3.8.23"
Python 报错 ‘ascii’ codec can’t encode characters in position 0-8:ordinal not in range(128)
- 第一步,别忘了给文件顶部加上
1 | # -*- coding: utf-8 -*- |
- 重新载入SYS模块并设置uft-8
1 | import sys |
使用nvm的前置脚本
1 | export NVM_DIR="$HOME/.nvm" |
快速启用httpserver
1 | python -m SimpleHTTPServer 8080 |
启动 mongodb 数据库服务
1 | mongod --dbpath=/users/ |
启动 redis 数据库
1 | redis-server |