Category: 数据库

一月 14th, 2017 by lanxinxichen@126.com

TypeError: not enough arguments for format string

使用Python连接数据库的时候,采用的非常非常轻量级的torndb,甚至于事务都不支持,所以用”select * from table where condition=’%s'” % (condition,)

因为用的比较原生,所以各种问题接连不断,最最恶心的就是字符串转义造成的一些列原因.

先采用

condition = re.escape(condition)

能对特殊字符进行转义,但是还是有问题,又报错TypeError: not enough arguments for format string 直到认真看输入的condition字符串的时候,才发现问题所在之处: condition中有% 需要替换%为%%才能正常执行,

condition= condition.replace('\%', '%%')

其实标题有问题,不只是操作数据库,只不过在操作数据库时候,忽略的字符串本身的内容,一直在错误的寻找解决方案.

Posted in Coding, Python, 数据库 Tagged with: ,

四月 29th, 2016 by lanxinxichen@126.com

事情的起因是这样的,mysql5.5(包括)以下版本都是不支持设置多个timestamp默认值的,所以当我执行有的表中包含两个timestamp带DEFAULT CURRENT_TIMESTAMP的sql的时候就执行不了了.为了保持代码和数据库的版本一致性,就开始了这次的mysql安装之旅.

第一次安装mysql的时候是大二大三的时候吧,那时候是安装版.我一直以为如果别人的轮子比你造的好,你就不用重复造轮子,所以我以前一直使用的是mysql的集成环境,即使是在linux上面安装mysql也都是按照教程一点一点儿来的,只有当现有的东西不能满足的情况下,才需要自己动手.所以才动手安装mysql5.7的.我按照印象去下载mysql,下载下来结果发现是绿色版,一脸懵逼…接下来就简单记录一下mysql安装中需要解决的几个问题.

1. 解压mysql

解压后注意修改解压文件夹的位置,尽量不要放在中文目录下面,虽然我没有测试是否有问题,但是在这上面遇到的坑又不是一次两次了.

2. 增加配置文件: my.ini

修改默认的my-default.ini文件

[mysqld]
basedir=”D:/MySQL/”   # mysql的解压路径
datadir=”D:/MySQL/data/”  # mysql的数据表的存储路径

3. 初始化mysql (第一个坑)

网上流传的mysql绿色版的安装方式都是没有这一步的最多指定以下my.ini的位置,但是如果跳过这一步,下面的服务项即使是安装成功了,也会处于”mysql –正在启动中吧  mysql — 启动失败”状态中.所以需要进行mysql的初始化工作.在mysql/bin的目录中执行以下代码:

mysqld –defaults-file=my.ini –initialize-insecure 

如果报mysqld命令不存在的话,请核对你自己的mysql安装路径是否正确,具体查看参考链接1

4. 安装mysql到服务项

这一步就是简单的 mysqld –install 同时如果想要卸载服务项的话,就使用mysqld –remove

5. 启动服务项

在cmd命令行中敲入net start mysql ,同样的如果需要停止的话,就敲入 net stop mysql

既然是加入到了服务项中,自然也可以在windows的服务管理中找到这个服务,然后进行操作.

6. 增加一个远程的全局权限的用户

这时候在mysql/bin 目录中敲入 mysql -u root 进入到mysql命令行中,修改密码,不知道mysql是哪个版本开始,密码的字段名不再是password而是authentication_string,蜜汁设定...具体查看参考链接2

update user set authentication_string=password('root') where user='root';

这时候的root用户只能在本地访问的,我强制修改数据表的localhost为%还是不行,没有验证是不是配置文件也需要修改,印象中之前的版本就是控制字段就可以 了.这条路行不通,那么我就需要增加一个远程访问的超级管理员用户了.按照参考链接3就尅完成操作了.

创建一个远程访问的超级管理员chen,密码为chen

grant all privileges on *.* to chen@’%’ identified by ‘chen';

 

参考:

解决Windows安装解压版MySQL出现服务正在启动-服务无法启动的问题

mysql-user-db-does-not-have-password-columns-installing-mysql-on-osx

mysql创建超级管理员

Posted in 数据库 Tagged with:

七月 7th, 2015 by lanxinxichen@126.com
升级命令wget http://down.wdlinux.cn/in/mysql_up55.sh
sh mysql_up55.sh

今天升级mysql5.5 结果发现怎么都启动不起来
错误情况
http://www.wdlinux.cn/bbs/viewthread.php?tid=5137
安装完后提示
1.png

重启mysql时提示,后台登陆不了。
2.png

解决办法

3.png

vi /www/wdlinux/init.d/mysqld
修改46 47行的目录为安装目录与数据库目录
4.png

5.png

 

原文链接:http://www.wdlinux.cn/bbs/thread-5461-1-1.html

Posted in PHP, 数据库

五月 26th, 2015 by lanxinxichen@126.com

在做第三方接口对接的时候,有些数据返回的都是json字符串,所以在处理的时候,有时候需要将json字符串给存到数据库中,因为在ecshop 中全部用的都是sql语句插入的,所以有时候json字符串中有一些非法字符,会吧sql语句给中断,比如”()”这种.

为了避免出现这种问题,使用mysql_real_escape_string函数给转化成对数据库安全的字符串.

然而在转化的时候,把一些不希望存入数据库的一些字符串页给转化了一下.之后在用explore处理该字符串的时候,一直报错,并且看到的字符串是乱码的.

开始以为是编码方式和字符集的问题,于是使用iconv 和mb_detect_encoding mb_convert_encoding 去转化,都无法生效,同样的explore也无法分割.直到发现是mysql_real_escape_string的原因…

所以转移字符并不是什么地方都可以使用的.

Posted in 数据库 Tagged with: , , ,