1. 1
  2. 1
  3. 1
  4. 1
  • 欢迎您
    mysql配置文件设置
    孙小宇 2020-10-12 技术语录

    233

    解决Incorrect integer value: '' for column 'id' at row 1的方法

    my.ini中查找sql-mode,

    默认为sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",

    将其修改为sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",重启mysql后即可

    解决too many connections

    max_connections = 3600
    max_user_connections=600

    该错误的解决办法:Incorrect string value: '\xF0\x9F...' for column 'XXX' at row 1

    在mysql的安装目录下找到my.ini,作如下修改:

    [mysqld]

    character-set-server=utf8mb4

    [mysql]

    default-character-set=utf8mb4

    修改后重启Mysql


  • 欢迎您
    Linux chattr命令
    摘抄 2020-07-16 技术语录

    328

    Linux chattr命令用于改变文件属性。

    这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:

    1. a:让文件或目录仅供附加用途。

    2. b:不更新文件或目录的最后存取时间。

    3. c:将文件或目录压缩后存放。

    4. d:将文件或目录排除在倾倒操作之外。

    5. i:不得任意更动文件或目录。

    6. s:保密性删除文件或目录。

    7. S:即时更新文件或目录。

    8. u:预防意外删除。

    语法

    chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]

    参数

      -R 递归处理,将指定目录下的所有文件及子目录一并处理。

      -v<版本编号> 设置文件或目录版本。

      -V 显示指令执行过程。

      +<属性> 开启文件或目录的该项属性。

      -<属性> 关闭文件或目录的该项属性。

      =<属性> 指定文件或目录的该项属性。

    实例

    用chattr命令防止系统中某个关键文件被修改:

    chattr +i /etc/resolv.conf
    lsattr /etc/resolv.conf

    会显示如下属性

    ----i-------- /etc/resolv.conf

    让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件:

    chattr +a /var/log/messages


  • 欢迎您
    php 上传大文件主要涉及配置
    孙小鱼 2020-06-09 技术语录

    321

    php.ini配置文件中的默认文件上传大小为2M, 默认upload_max_filesize = 2M,即文件上传的大小为2M,如果你想上传超过8M的文件,比如20M,你必须设定upload_max_filesize = 20M。但是光设置upload_max_filesize = 20M还是无法实现大文件的上传功能,你必须修改php.ini配置文件中的post_max_size选项,其代表允许POST的数据最大字节长度,默认为8M。如果POST数据超出限制,那么$_POST和$_FILES将会为空。要上传大文件,你必须设定该选项值大于upload_max_filesize指令的值,我一般设定upload_max_filesize和post_max_size值相等。另外如果启用了内存限制,那么该值应当小于memory_limit选项的值。

     文件上传的其他注意事项

      在上传大文件时,你会有上传速度慢的感觉,当超过一定的时间,会报脚本执行超过30秒的错误,这是因为在php.ini配置文件中max_execution_time配置选项在作怪,其表示每个脚本最大允许执行时间(秒),0 表示没有限制。你可以适当调整max_execution_time的值,不推荐设定为0。


  • 欢迎您
    TP操作数据库操作报错 SQLSTATE[HY000]: General error 2503
    孙小鱼 2020-06-09 技术语录

    433

    SQLSTATE[HY000]: General error 2503


    这个错误是 由于$this->query引起的,在3.2.3版本下读写操作要query和execute方法分开调用,否则调试模式下面会报错

    由于TP框架在3.2.3之后,要求读写操作使用不同的方法调用,如果错误使用了,则在非调试模式下会报错。

    1、读数据使用 $this->query

    2、写数据使用 $this->execute

    在TP5之后的写法为:

    1、读数据使用 Db::query

    2、写数据使用 Db::execute

    ————————————————

    原文链接:https://blog.csdn.net/u012369749/java/article/details/79904326


  • 欢迎您
    TP3.2链接多个数据库
    Mike 2019-11-27 技术语录

    297

    return array(
    	'DB_TYPE'=>'mysql',
    	'DB_HOST'=>'localhost',
    	'DB_NAME'=>'domain_cc',
    	'DB_USER'=>'root',
    	'DB_PWD'=>'root',
    	'DB_PORT'=>'3306',
    	'DB_PREFIX'=>'rockphp_',
    'DB_CONFIG1' => array(
    'db_type'  => 'mysql',
    'db_host'  => 'localhost',
    'db_name'  => 'domain1_cc',
    'db_user'  => 'root',
    'db_pwd'  => 'root',
    'db_port'  => '3306',
    		),
    'DB_CONFIG2' => array(
    'db_type'  => 'mysql',
    'db_host'  => 'localhost',
    'db_name'  => 'domain2_cc',
    'db_user'  => 'root',
    'db_pwd'  => 'root',
    'db_port'  => '3306',
    'db_prefix'=>'badcat_',
    		)
    	
    );

    调用方式:


    1. $list = M('Picture')->limit(10)->select();

    2. $list1 = M('Picture','','DB_CONFIG1')->limit(10)->select();

    3. $list2 = M('Picture','badcat_','DB_CONFIG2')->limit(10)->select();


  • 欢迎您
    mysql报错SQLSTATE[42000]: Syntax error or access violation:
    Mike 2019-11-25 技术语录

    302


    报错SQLSTATE[42000]: Syntax error or access violation: 1055

    解决方案:

    或打开mysql配置文件win下(my.ini)找到

    sql-mode="STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER"

    若其中包括 NO_ZERO_IN_DATE,NO_ZERO_DATE  将其去掉;
    解释:
    NO_ZERO_DATE:在非严格模式下,可以插入形如“0000-00-00 00:00:00”的非法日期,MySQL数据库仅抛出一个警告。

    而启用该选项后,MySQL数据库不允许插入零日期,插入零日期会抛出错误而非警告。
    NO_ZERO_IN_DATE:在严格模式下,不允许日期和月份为零。如“2011-00-01”和“2011-01-00”这样的格式是不允许的。

    采用日期或月份为零的格式时MySQL都会直接抛出错误而非警告             


  • 欢迎您
    MySQL中删除重复数据只保留一条
    孙小宇 2019-05-10 技术语录

    327

    昨天做需求遇到一个问题,就是要把数据库中,数据表里有重复得数据,需要删除重复得数据并且保留一条啊数据,查了网上好多说法,最终选择了这个方法,借鉴别人得方法,自己收藏起来,供我们一起学习,后面我会贴出原链接

    用SQL语句,删除掉重复项只保留一条

    在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 
    1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断

    SELECT
        *FROM
        peopleWHERE
        peopleId IN (        SELECT
                peopleId        FROM
                people        GROUP BY
                peopleId        HAVING
                count(peopleId) > 1
        )


    2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录


    DELETEFROM
        peopleWHERE
        peopleName IN (        SELECT
                peopleName        FROM
                people        GROUP BY
                peopleName        HAVING
                count(peopleName) > 1
        )AND peopleId NOT IN (    SELECT
            min(peopleId)    FROM
            people    GROUP BY
            peopleName    HAVING
            count(peopleName) > 1)

    3、查找表中多余的重复记录(多个字段)

    SELECT
        *FROM
        vitae aWHERE
        (a.peopleId, a.seq) IN (        SELECT
                peopleId,
                seq        FROM
                vitae        GROUP BY
                peopleId,
                seq        HAVING
                count(*) > 1
        )

    4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录

    DELETEFROM
        vitae aWHERE
        (a.peopleId, a.seq) IN (        SELECT
                peopleId,
                seq        FROM
                vitae        GROUP BY
                peopleId,
                seq        HAVING
                count(*) > 1
        )AND rowid NOT IN (    SELECT
            min(rowid)    FROM
            vitae    GROUP BY
            peopleId,
            seq    HAVING
            count(*) > 1)

    5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录

    SELECT
        *FROM
        vitae aWHERE
        (a.peopleId, a.seq) IN (        SELECT
                peopleId,
                seq        FROM
                vitae        GROUP BY
                peopleId,
                seq        HAVING
                count(*) > 1
        )AND rowid NOT IN (    SELECT
            min(rowid)    FROM
            vitae    GROUP BY
            peopleId,
            seq    HAVING
            count(*) > 1)

    6.消除一个字段的左边的第一位:

    UPDATE tableNameSET [ Title ]= RIGHT ([ Title ],(len([ Title ]) - 1))WHERE
        Title LIKE '村%'

    7.消除一个字段的右边的第一位:

    UPDATE tableNameSET [ Title ]= LEFT ([ Title ],(len([ Title ]) - 1))WHERE
        Title LIKE '%村'

    8.假删除表中多余的重复记录(多个字段),不包含rowid最小的记录

    UPDATE vitaeSET ispass =- 1WHERE
        peopleId IN (        SELECT
                peopleId        FROM
                vitae        GROUP BY
                peopleId

    原链接:https://www.cnblogs.com/jiangxiaobo/p/6589541.html

  • 欢迎您
    微信公众号开发关注推送消息回复实现不了的解决方法
    sxy 2019-04-29 技术语录

    527

    我从开发微信公众号,遇到很多问题,一开始我要用thinkphp5框架,但是用此框架,前提是php版本必须是5.4以上版本;
    后来框架从thinkphp5换到了thinkphp3.2,原因是php版本太低,为了不影响其他项目得使用,选择了tp3.2,开始得时候还很顺利,到了
    开发自动回复模块,真的是让人头疼
    问题1:还是PHP版本问题,如果你是php7以上,获取post文件就得使用file_get_contents("php://input");否在,你要是php7版本以下,
    那你得函数就变成了$GLOBALS['HTTP_RAW_POST_DATA'];
    问题2:微信定义得FromUserName和ToUserName和"<xml>
    			                    <ToUserName><![CDATA[%s]]></ToUserName>
    			                    <FromUserName><![CDATA[%s]]></FromUserName>
    			                    <CreateTime>%s</CreateTime>
    			                    <MsgType><![CDATA[%s]]></MsgType>
    			                    <Content><![CDATA[%s]]></Content>
    			                    <FuncFlag>%d</FuncFlag>
    			                    </xml>";正好相反;更值得关注得是不要在此有任何空格出现
    问题3:这个就是困扰我很长时间得地方啊,要在php.ini里设置always_populate_raw_post_data = On ,这个是针对php7一下版本得
    1.tp5和其他的不太一样 需要去判断$_GET['echostr'] 是否为空再去访问方法如下代码

    public function index(){

            //获得参数 signature nonce token timestamp echostr

            if(isset($_GET['echostr'])){

                $nonce     = $_GET['nonce'];

                $token     = 'weixin';

                $timestamp = $_GET['timestamp'];

                $signature = $_GET['signature'];

                $echostr   = $_GET['echostr'];

                //形成数组,然后按字典序排序

                $array = array($nonce, $timestamp, $token);

                sort($array);

                //拼接成字符串,sha1加密 ,然后与signature进行校验

                $str = sha1( implode( $array ) );

                if( $str  == $signature){

                    //第一次接入weixin api接口的时候

                    ob_clean();

                    header('content-type:text');

                    echo  $echostr;

                    exit;

                }

            }else{

                $this->reponseMsg();

            }

        }

    2.我用的是tp5.1 php 版本设定的是php7.0 而网上的$postArr 大多都是


    $postArr = $GLOBALS['HTTP_RAW_POST_DATA'];

    这个在php7.0中是无法使用的所以需要改为


    $postArr = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : file_get_contents("php://input");

    这个是tp版本通用的 上例子


     public function reponseMsg(){

            //1.获取到微信推送过来post数据(xml格式)

            //$postArr = $GLOBALS['HTTP_RAW_POST_DATA'];//php7以上不能用

     

            $postArr = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : file_get_contents("php://input");

            //$postArr = file_get_contents("php://input");

            //2.处理消息类型,并设置回复类型和内容

            $postObj = simplexml_load_string( $postArr );

            //判断该数据包是否是订阅的事件推送

            if( strtolower( $postObj->MsgType) == 'event'){

                //如果是关注 subscribe 事件

                if( strtolower($postObj->Event == 'subscribe') ){

                    //回复用户消息(纯文本格式)

                    $toUser   = $postObj->FromUserName;

                    $fromUser = $postObj->ToUserName;

                    $time     = time();

                    $msgType  =  'text';

                    //$content  = '您好,欢迎关注微信公众账号'.$postObj->FromUserName.'-'.$postObj->ToUserName;

                    $content  = '欢迎关注微信公众账号';

                    $template = "<xml><ToUserName><![CDATA[%s]]></ToUserName>

                                <FromUserName><![CDATA[%s]]></FromUserName>

                                <CreateTime>%s</CreateTime>

                                <MsgType><![CDATA[%s]]></MsgType>

                                <Content><![CDATA[%s]]></Content></xml>";

                    $info     = sprintf($template, $toUser, $fromUser, $time, $msgType, $content);

                    echo $info;

                }

            }

        }//

    --------------------- 

    作者:腐腐gay 

    来源:CSDN 

    原文:https://blog.csdn.net/wanganji5252/article/details/89241423 


  • 姓名:孙小宇
  • 职业:PHP开发
  • 邮箱:yntx420@163.com
  • 定位:河北 · 张家口
       
  •   总访问量:15.22w+
  •   累计访问量:12.48w+
  •