【问题标题】:Set sql_mode “blank” in MySQL 5.7 use only mysqli_query在 MySQL 5.7 中将 sql_mode 设置为“空白”,仅使用 mysqli_query
【发布时间】:2017-03-22 10:10:08
【问题描述】:

相对答案搜索
我尝试了所有与此主题相关的问题和答案。

  1. setting global sql_mode in mysql

  2. https://dba.stackexchange.com/questions/109053/set-sql-mode-blank-after-upgrading-to-mysql-5-6

  3. How To Set MySql SQL_MODE to ANSI from PHP

  4. http://php.net/manual/en/mysqli.options.php

我想更新mysql中的全局变量sql_mode = ''

在将 MySQL 从 5.5 升级到 5.7.15 后,我们的一些应用程序遇到了问题,需要将 sql_mode 设置为空白来解决这个问题。我添加了 sql_mode = '' 但对 mysql 设置没有影响。

如何让 sql_mode 保持空白?

代码枯燥

$db = new DB_Sql();
$db->Host  = "172.**.**.**";
$db->Database   = "MyDatabase";
$db->User   = "root";
$db->Password   = "MyPassword";

global $ourFileName,$link;  
         
$SITE_URL="http://".$_SERVER[HTTP_HOST];
$SITE_HTTPS_URL="http://".$_SERVER[HTTP_HOST];

$ourFileName = $_SERVER['DOCUMENT_ROOT'] . "/Log/MaintenaceLogFiles.txt"; 

 $ndb=$mdb=$db; 
 
 $link=mysqli_connect($db->Host, $db->User, $db->Password,$db->Database);

    if(mysqli_connect_errno())
    {
    echo '<p>Error: Unable to connect to MySQL: '.mysqli_connect_error().'</p>';
    }
    
  mysqli_query($link,"set sql_mode = '' ") or die(mysqli_error());  

注意: 仅使用 mysqli_query 不使用 .cnf

【问题讨论】:

    标签: php mysql mysqli


    【解决方案1】:

    为什么你认为它不起作用?

    对我有用

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $db=mysqli_connect($db->Host, $db->User, $db->Password,$db->Database);
    $db->set_charset("utf8mb4");
    
    $row = $db->query("SHOW VARIABLES LIKE 'sql_mode'")->fetch_row();
    var_dump($row[1]);
    
    $db->query("SET SESSION sql_mode=''");
    
    $row = $db->query("SHOW VARIABLES LIKE 'sql_mode'")->fetch_row();
    var_dump($row[1]);
    

    输出

    string(62) "STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    string(0) ""
    

    如果出于某种原因,您想将其设置为全局(而您不应该在 root 下运行查询)

    $mysqli->query("SET GLOBAL sql_mode='', SESSION sql_mode=''");
    

    【讨论】:

    • 感谢您的回答。我试过但更新一个简单的变量sql_mode 不改变全局变量。我更新全局变量
    • 我检查了我的更新全局变量sql_modeselect @@sql_mode; 不能为空
    • 要更新一个全局变量,你应该更新一个全局变量。但是您正在更新代码中的会话变量。做你的想法
    • 我在 phpmyadmin 中设置了用户 customuser 不是(rootuser 使用)。所以我不能更新全局变量所以请帮忙
    • 然后将其设置为会话
    猜你喜欢
    • 2011-01-20
    • 2013-12-20
    • 2016-01-25
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    相关资源
    最近更新 更多