2017-03-18 65 views
0

我想這個變量innodb_autoinc_lock_mode從默認值1更改爲0,因爲它是導致該查詢使用INSERT IGNORE等如何更改每個用戶在cPanel服務器上的innodb_autoinc_lock_mode變量?

我知道它可以爲所有被改變了應用程序通過自動遞增的ID差距問題

innodb_autoinc_lock_mode=0 

內部文件:通過添加設置服務器

/etc/my.cnf 

但有可能做到這一點對每個用戶,例如像它與php.ini文件發生了,在的cPanel/WHM分享hosti ng帳戶?

我已經嘗試設置文件與變量和值:

/home/username/.my.cnf 
/home/username/my.cnf 
/home/username/etc/.my.cnf 
/home/username/etc/my.cnf 

他們都不似乎工作,任何想法如何可以做到這一點,無論是通過每個用戶或通過phpMyAdmin的等設置文件?

謝謝!

回答

0

innodb_autoinc_lock_mode system variable是一個全局(不是會話)變量,並且在運行時是隻讀的。

在任何情況下,對於同一個MySQL服務器的多個連接不可能具有不同的值。

此外,我不確定將此值設置爲0是否符合INSERT ... ON DUPLICATE KEY UPDATE語句的要求。如果確實可以避免丟失已分配但不需要的值,那麼在這一點上文檔是非常不清楚的。

+0

感謝您的回覆,設置確實是我原來的帖子建議的內容,我已經作爲根測試my.cnf中的設置 雖然文檔不清楚值0是否防止插入忽略,在插入失敗的情況下增加了計數器(這真是奇怪的順便說一句,不應該發生在設計上,但它確實!),當innodb_autoinc_lock_mode = 0被配置時,這似乎是固定的。 因此,總結,不可能通過任何方式設置每個用戶的全局變量? – user3843119

+0

當一個變量是* global only *時 - 就像這樣 - 這是正確的:整個服務器有一個值。某些變量既是全局變量又是會話變量 - 通常,在這種情況下,當您連接時會獲得全局值,但可以在會話(連接)中更改它。如果你仔細想想,這是一種**鎖定模式**,因此如果不同連接上的不同用戶可能具有不同的值,那麼將會破壞變量的整個目的,這確保所有連接使用兼容的鎖定模式, t垃圾對方的插入。 –

相關問題