利用修改sql_mode=NO_TABLE_OPTIONS收集建表語句,去掉engine和charset關鍵字
一、描述
平時我們有需求是要根據已有的表來生成建立表語句,直接檢視生成過程中會有ENGINE和CHARSET兩個關鍵字,其實我們大多數時候是不需要該引數,如果匯出後手工修改指令碼,實在是在麻煩了。在這裡我們可以使用sql_mode引數,修改為NO_TABLE_OPTIONS來進行收集。當然我們注意點是要修改當前session的變數,而不是全域性變數。下面是個小小的實驗,演示一下這個過程。
二、實驗
1.檢視sql_mode變數當然值
-
mysql> show variables like 'sql_mode';
-
+---------------+--------------------------------------------+
-
| Variable_name | Value |
-
+---------------+--------------------------------------------+
-
| sql_mode | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
-
+---------------+--------------------------------------------+
- 1 row in set (0.01 sec)
2.檢視t1表的建立語句,帶有ENGINE與CHARSET兩個引數
-
mysql> show create table t1;
-
+-------+----------------------------------------------------------------------------------------------------------------------+
-
| Table | Create Table |
-
+-------+----------------------------------------------------------------------------------------------------------------------+
-
| t1 | CREATE TABLE `t1` (
-
`id` int(11) DEFAULT NULL,
-
`name` char(20) DEFAULT NULL
-
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
-
+-------+----------------------------------------------------------------------------------------------------------------------+
- 1 row in set (0.00 sec)
3.修改sql_mode為NO_TABLE_OPTIONS
-
mysql> set session sql_mode='NO_TABLE_OPTIONS';
-
Query OK, 0 rows affected (0.00 sec)
-
-
mysql> show variables like '%sql_mode%';
-
+---------------+------------------+
-
| Variable_name | Value |
-
+---------------+------------------+
-
| sql_mode | NO_TABLE_OPTIONS |
-
+---------------+------------------+
- 1 row in set (0.00 sec)
4.再次檢視建t1表SQL語句,沒有ENGINE和CHARSET兩個引數
-
mysql> show create table t1;
-
+-------+-----------------------------------------------------------------------------------+
-
| Table | Create Table |
-
+-------+-----------------------------------------------------------------------------------+
-
| t1 | CREATE TABLE `t1` (
-
`id` int(11) DEFAULT NULL,
-
`name` char(20) DEFAULT NULL
-
) |
-
+-------+-----------------------------------------------------------------------------------+
- 1 row in set (0.00 sec)
5.退出會話,使sql_mode引數恢復預設值
三、總結
一個小小sql_mode的引數調整,可以省去我們遷移過程中,大量修改指令碼的操作。當然在MYSQL中sql_mode引數還有很對應的值,需要我們繼續學習與研究。MYSQL真是有意思,繼續學習中......
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26148431/viewspace-2146599/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- # 關於select關鍵字語句定義順序# 關於select關鍵字語句執行順序
- 12c 資料泵提取建表空間語句和建表語句
- Sql建表語句SQL
- sql 建表語句SQL
- 利用 alter 語句修改欄位屬性
- Oracle表、索引修改表空間語句Oracle索引
- SQL語句收集SQL
- MySQL檢視建表語句MySql
- 多表查詢建表語句
- 兩表聯查修改的sql語句SQL
- MySQL高階部分-建表語句MySql
- mysql 查詢建表語句sqlMySql
- mysql新建表和多表查詢,關鍵字joinMySql
- out關鍵字和ref關鍵字的區別
- 資料庫-單表結構-建表語句資料庫
- SQL Server 和 MySql 語法和關鍵字的區別ServerMySql
- c語言中的關鍵字C語言
- C語言之static關鍵字C語言
- 利用MySQL原資料資訊批量轉換指定庫資料表生成Hive建表語句MySqlHive
- oracle之 獲取建表ddl語句Oracle
- Go 語言 new 和 make 關鍵字的區別Go
- js關鍵字和方法JS
- 關鍵字和保留字
- 在Oracle 9i中修改表的結構的相關sql語句OracleSQL
- 一些sql語句的關鍵詞SQL
- mysql中建庫、建表、增刪改查DDL語句MySql
- 建庫語句
- Docker 關鍵字說明及一鍵構建相關服務Docker
- 資料庫的建立,修改和刪除----利用企業管理器和T-SQL語句資料庫SQL
- mysql 中sql語句關鍵字的書寫順序與執行順序MySql
- [20151212優化sql語句要注意關鍵字DISTINCT優化SQL
- 如何高效利用 GitHub 關鍵字進行搜尋Github
- JavaScript 關鍵字和保留字JavaScript
- javascript 作用域和 this 關鍵字JavaScript
- typedef和typename關鍵字 (轉)
- mysql建表常用sql語句個人經驗分享MySql
- PostgreSQL獲取建表語句儲存過程SQL儲存過程
- 給 go 語言新增中文關鍵字Go