溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

mysql中如何利用修改sql_mode=NO_TABLE_OPTIONS收集建表語句并去掉engine和charset關(guān)鍵字

發(fā)布時間:2021-10-27 17:01:48 來源:億速云 閱讀:113 作者:小新 欄目:MySQL數(shù)據(jù)庫

這篇文章將為大家詳細(xì)講解有關(guān)mysql中如何利用修改sql_mode=NO_TABLE_OPTIONS收集建表語句并去掉engine和charset關(guān)鍵字,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

一、描述

       平時我們有需求是要根據(jù)已有的表來生成建立表語句,直接查看生成過程中會有ENGINE和CHARSET兩個關(guān)鍵字,其實我們大多數(shù)時候是不需要該參數(shù),如果導(dǎo)出后手工修改腳本,實在是在麻煩了。在這里我們可以使用sql_mode參數(shù),修改為NO_TABLE_OPTIONS來進行收集。當(dāng)然我們注意點是要修改當(dāng)前session的變量,而不是全局變量。下面是個小小的實驗,演示一下這個過程。

二、實驗

1.查看sql_mode變量當(dāng)然值

  1. mysql> show variables like 'sql_mode';

  2. +---------------+--------------------------------------------+

  3. | Variable_name | Value |

  4. +---------------+--------------------------------------------+

  5. | sql_mode | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |

  6. +---------------+--------------------------------------------+

  7. 1 row in set (0.01 sec)

2.查看t1表的建立語句,帶有ENGINE與CHARSET兩個參數(shù)

  1. mysql> show create table t1;

  2. +-------+----------------------------------------------------------------------------------------------------------------------+

  3. | Table | Create Table |

  4. +-------+----------------------------------------------------------------------------------------------------------------------+

  5. | t1 | CREATE TABLE `t1` (

  6.   `id` int(11) DEFAULT NULL,

  7.   `name` char(20) DEFAULT NULL

  8. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

  9. +-------+----------------------------------------------------------------------------------------------------------------------+

  10. 1 row in set (0.00 sec)

3.修改sql_mode為NO_TABLE_OPTIONS

  1. mysql> set session sql_mode='NO_TABLE_OPTIONS';

  2. Query OK, 0 rows affected (0.00 sec)


  3. mysql> show variables like '%sql_mode%';

  4. +---------------+------------------+

  5. | Variable_name | Value |

  6. +---------------+------------------+

  7. | sql_mode | NO_TABLE_OPTIONS |

  8. +---------------+------------------+

  9. 1 row in set (0.00 sec)


4.再次查看建t1表SQL語句,沒有ENGINE和CHARSET兩個參數(shù)

  1. mysql> show create table t1;

  2. +-------+-----------------------------------------------------------------------------------+

  3. | Table | Create Table |

  4. +-------+-----------------------------------------------------------------------------------+

  5. | t1 | CREATE TABLE `t1` (

  6.   `id` int(11) DEFAULT NULL,

  7.   `name` char(20) DEFAULT NULL

  8. ) |

  9. +-------+-----------------------------------------------------------------------------------+

  10. 1 row in set (0.00 sec)

5.退出會話,使sql_mode參數(shù)恢復(fù)默認(rèn)值

關(guān)于“mysql中如何利用修改sql_mode=NO_TABLE_OPTIONS收集建表語句并去掉engine和charset關(guān)鍵字”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI