Cloudron makes it easy to run web apps like WordPress, Nextcloud, GitLab on your server. Find out more or install now.


Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Bookmarks
  • Search
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo

Cloudron Forum

Apps | Demo | Docs | Install
  1. Cloudron Forum
  2. LAMP
  3. Disable Strict Mode Mysql

Disable Strict Mode Mysql

Scheduled Pinned Locked Moved Solved LAMP
lampsqlmode
20 Posts 7 Posters 8.1k Views 7 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • saikarthikS saikarthik

    @girish Yes. I'm trying to get more details on how to do exactly that. This is not a PHP app I coded. So where do I begin to look for where it makes the database connection? Could there be more than 1 place where I need to add SET sql_mode = '';??

    The PHP directories look like the attached.
    Screen Shot 2020-10-04 at 11.42.43 PM.png

    saikarthikS Offline
    saikarthikS Offline
    saikarthik
    wrote on last edited by
    #10
    This post is deleted!
    1 Reply Last reply
    0
    • girishG Offline
      girishG Offline
      girish
      Staff
      wrote on last edited by
      #11

      It seems the way to access the db itself is like this https://github.com/X2Engine/X2CRM/blob/8718c36c5710e19b4155bb00315ffec08209438d/x2engine/protected/models/Fields.php#L795

      @saikarthik I am not a PHP dev as such but see https://yii2-framework.readthedocs.io/en/stable/guide/db-dao/ . Specifically, "Tip: If you need to execute a SQL query right after establishing a connection (e.g., to set the timezone or character set), you can do so in the [[yii\db\Connection::EVENT_AFTER_OPEN]] event handler. " .

      There's a code sample in the above link.

      1 Reply Last reply
      0
      • girishG Offline
        girishG Offline
        girish
        Staff
        wrote on last edited by
        #12

        Maybe https://github.com/X2Engine/X2CRM/blob/master/x2engine/protected/config/main.php#L250 is the place to put the on afterOpen event.

        1 Reply Last reply
        0
        • saikarthikS Offline
          saikarthikS Offline
          saikarthik
          wrote on last edited by
          #13

          @girish Thanks so much for your guidance!

          Here's the exact fix:
          Needed to add the following to the 'db' here (https://github.com/X2Engine/X2CRM/blob/master/x2engine/protected/config/main.php#L250) :

          'initSQLs'=>array("SET @@sql_mode = REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY,', '')",),
          

          This is where I found 'initSQLs':
          https://github.com/X2Engine/X2CRM/blob/b60fb5c4ae969f59e6d4b9efa2ae72394ed45e60/x2engine/framework/db/CDbConnection.php#L244

          1 Reply Last reply
          2
          • P Offline
            P Offline
            p44
            translator
            wrote on last edited by
            #14

            Dear All, I've to apply this small guide:

            https://sendy.co/forum/discussion/7752/campaign-sent-to-0-recipients-ubuntu-php-7/p1

            Inside "Sendy.co".

            Can you help me? Where I can add code below or something similar?

                    $pDO->query("SET sql_mode = ''");
            

            Thank's a lot!

            1 Reply Last reply
            0
            • girishG Offline
              girishG Offline
              girish
              Staff
              wrote on last edited by
              #15

              @p44 The MySQL database in Cloudron is shared by all the apps. In MySQL 5.7.5+, they changed the behavior to have ONLY_FULL_GROUP_BY to be the default to be more compliant. Disabling this at the server level will cause issues for other apps.

              The correct way to fix this is to have the app disable this mode at a session level. Like https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html . Essentially, the app has to call "SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));" after creating a connection.

              So, I guess the answer is:

              1. Either sendy has to provide a mechanism to do the above.
              2. Alternately, you cannot run sendy in Cloudron. You have to create a dedicated server for this and setup MySQL accordingly.
              timconsidineT 1 Reply Last reply
              0
              • nebulonN nebulon referenced this topic on
              • osoboO Offline
                osoboO Offline
                osobo
                wrote on last edited by
                #16

                Dear All,
                I'm trying to install OpenSIS (https://github.com/OS4ED/openSIS-Classic) on Cloudron's LAMP.
                It requires to disable MySQL strict mode.
                I'm not a PHP Dev and don't know how to do that. Would a brave soul kindly help me to figure out where to insert SET sql_mode = ''; instruction into PHP code ?
                Thanks a lot for the support !
                Bertrand

                girishG 1 Reply Last reply
                1
                • osoboO osobo

                  Dear All,
                  I'm trying to install OpenSIS (https://github.com/OS4ED/openSIS-Classic) on Cloudron's LAMP.
                  It requires to disable MySQL strict mode.
                  I'm not a PHP Dev and don't know how to do that. Would a brave soul kindly help me to figure out where to insert SET sql_mode = ''; instruction into PHP code ?
                  Thanks a lot for the support !
                  Bertrand

                  girishG Offline
                  girishG Offline
                  girish
                  Staff
                  wrote on last edited by
                  #17

                  @osobo this is specific to the app. So, unless someone knows OpenSIS code base, it's difficult to know this. Maybe you can ask OpenSIS devs if this MySQL strict mode can be disabled at session level ?

                  osoboO 1 Reply Last reply
                  0
                  • girishG girish

                    @osobo this is specific to the app. So, unless someone knows OpenSIS code base, it's difficult to know this. Maybe you can ask OpenSIS devs if this MySQL strict mode can be disabled at session level ?

                    osoboO Offline
                    osoboO Offline
                    osobo
                    wrote on last edited by
                    #18

                    @girish Thanks for your prompt reply. Ok I will try to contact them to inquire about this. Will keep you guys updated. Best wishes !

                    1 Reply Last reply
                    0
                    • scookeS scooke referenced this topic on
                    • girishG girish

                      @p44 The MySQL database in Cloudron is shared by all the apps. In MySQL 5.7.5+, they changed the behavior to have ONLY_FULL_GROUP_BY to be the default to be more compliant. Disabling this at the server level will cause issues for other apps.

                      The correct way to fix this is to have the app disable this mode at a session level. Like https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html . Essentially, the app has to call "SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));" after creating a connection.

                      So, I guess the answer is:

                      1. Either sendy has to provide a mechanism to do the above.
                      2. Alternately, you cannot run sendy in Cloudron. You have to create a dedicated server for this and setup MySQL accordingly.
                      timconsidineT Offline
                      timconsidineT Offline
                      timconsidine
                      App Dev
                      wrote last edited by
                      #19

                      @girish said in Disable Strict Mode Mysql:

                      Essentially, the app has to call "SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));" after creating a connection.

                      Old thread but current problem (packaging another app)

                      @girish I thought our app cannot SET GLOBAL due to restricted permissions ? True / false ?

                      girishG 1 Reply Last reply
                      1
                      • timconsidineT timconsidine

                        @girish said in Disable Strict Mode Mysql:

                        Essentially, the app has to call "SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));" after creating a connection.

                        Old thread but current problem (packaging another app)

                        @girish I thought our app cannot SET GLOBAL due to restricted permissions ? True / false ?

                        girishG Offline
                        girishG Offline
                        girish
                        Staff
                        wrote last edited by
                        #20

                        @timconsidine said in Disable Strict Mode Mysql:

                        @girish I thought our app cannot SET GLOBAL due to restricted permissions ? True / false ?

                        My earlier comment seems to be a typo. I think I meant SET SESSION .

                        ONLY_FULL_GROUP_BY cannot be disabled globally on Cloudron. It's a deprecated flag in MySQL and any code needing it is deviating from SQL standards.

                        1 Reply Last reply
                        0
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        • Login

                        • Don't have an account? Register

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • Bookmarks
                        • Search