mysql 在修改新增欄位(alter table 表名 add column 或者 modify column)且帶unique時提示duplicate entry for key的原因以及解決方案
今天在公司臨時維護一張表時,我作了一個小動作,新增一個欄位,並且設定為unique時,盡然無法新增欄位,我當時就納悶了,寫了這麼多sql,這麼奇怪的問題還是第一次見,不多說,直接看圖
【我的sql檔案如下】
【執行sql語句報錯:alter table smart_payrecord add column api_pay_no varchar(32) not null unique comment '第三方介面訂單號' after pay_no;】
如下圖所示!
【於是我懷疑是否是表中存在資料在作怪,於是我把表資料清空(嚴重警告!真實情況請勿隨意清空,注意備份資料),然後再進行新增欄位就行了,有圖為證】
②:【推薦】更安全和快捷的科學的方法解決:先把這個欄位去掉索引,再進行修改,之所以報錯就是因為欄位存在索引的原因,一個欄位加上unique會預設加上索引的,這個毫無疑問!
相關推薦
mysql 在修改新增欄位(alter table 表名 add column 或者 modify column)且帶unique時提示duplicate entry for key的原因以及解決方案
今天在公司臨時維護一張表時,我作了一個小動作,新增一個欄位,並且設定為unique時,盡然無法新增欄位,我當時就納悶了,寫了這麼多sql,這麼奇怪的問題還是第一次見,不多說,直接看圖 【我的sql檔案如下】 【執行sql語句報錯:alter table smart_
查詢資料庫中帶有某個欄位的所有表名
mysql資料庫查詢帶有某個欄位的所有表名 SELECT * FROM information_schema.columns WHERE column_name='column_name'; ora
BOS新增欄位後關於儲存不上值或者儲存後顯出不出數
儲存欄位的資料時會呼叫storeFields() 儲存後會又呼叫loadFields(),其中getSelectors()方法中負責Query資料。 即新增欄位後,如果出現問題,則去繼承父類的這3個方法進行重寫。 例: public void loadFields() {
Oracle根據欄位值找到表名和列名
方法1: --Oracle 根據欄位值查詢其所在的表、欄位 DECLARE CURSOR cur_query IS SELECT table_name, column_name, data_type FROM user_tab_columns;
mysql主從延遲原因以及解決方案
MySQL資料庫主從同步延遲原理。 MySQL資料庫主從同步延遲是怎麼產生的。 MySQL資料庫主從同步延遲解決方案。 MySQL資料庫主從同步延遲產生的因素。 1.MySQL資料庫主從同步延遲原理。 答:談到MySQL資料庫主從同步延遲原理,得從mys
【mysql】MySQL新增欄位和修改欄位
MySQL新增欄位的方法並不複雜,下面將為您詳細介紹MYSQL新增欄位和修改欄位等操作的實現方法,希望對您學習MySQL新增欄位方面會有所幫助。 1新增表字段 alter table table1 add transactor varchar(10) not Null
MySQL新增欄位和修改欄位
1新增表字段 alter table table1 add transactor varchar(10) not Null; alter table table1 add id int unsigned not Null auto_increment primary ke
ALTER TABLE 語句新增欄位
ALTER TABLE xx ADD is_repeat VARCHAR(4) DEFAULT NULL COMMENT '是否重複領取(0:否,1:是)'; ALTER TABLE xx ADD created_user_id VARCHAR(32) DEFAULT N
mysql資料庫修改資料庫編碼,欄位編碼與表編碼
1.修改資料庫的編碼 將資料庫(test)的編碼方式修改為utf8,如: ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; 2.修改表的編碼 將表(test)的編碼方式修改為ut
mysql建立表的時候,新增欄位註釋
mysql建立表的時候,新增欄位註釋 直接po程式碼和案例 #建立表的時候寫註釋 CREATE TABLE userinfo( id INT COMMENT '編號', uname VARCHAR(40) COMMENT '使用者名稱', address VARCHAR(120)
Mysql新增欄位到大資料表導致鎖表
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> 年初跳完槽,終於可以安心開始寫一些部落格了。進入新的公司,還
mysql alter修改列欄位的長度型別名稱詳解
mysql 修改欄位長度 alter table news modify column titlevarchar(130); alter table 表名 modify column 欄位名 型別; 如:news 表裡的title 欄位 原來長度是100個字元,現長度要改成130個字元 alter ta
hive表新增欄位和欄位註釋修改
hive表新增欄位,修改欄位的註釋 (1)建立測試表: use mart_flow_test; create table if not exists mart_flow_test.detail_flow_test ( union_id string
SQl 語句(常見) 新建,刪除,修改表,新增欄位,修改預設值
SQl 語句(常見) 新建,刪除,修改表結構 新建表: create table [表名] ( [自動編號欄位] int IDENTITY (1,1) PRIMARY KEY , [欄位1] nV
MySQL新增欄位和修改欄位的方法
1、登入資料庫 >mysql -u root -p 資料庫名稱 2、查詢所有資料表 >show tables; 3、查詢表的欄位資訊 >desc 表名稱; 4.1修改表名 alter table table1 r
mysql新增欄位
使用事務給表新增欄位 #新增欄位說明 USE test;/*庫名*/ DROP PROCEDURE IF EXISTS schema_change; DELIMITER // CREATE PROCEDURE schema_change() BEGIN DECLARE CurrentDatab
mysql查詢擁有某個欄位的所有表
前言:最近遇到一個需求,需要給一個數據庫所有的表新增一個欄位,但是一些後建立的表已經有了這個欄位,所以引發了下文。 #查詢指定庫擁有某欄位的表 AND TABLE_NAME NOT LIKE 'vw%' 註釋:排除檢視 SELECT DISTINCT TABLE_NAME FROM infor
MySql 新增欄位內容由原欄位提供
今天遇到一個問題,mysql庫表中資料儲存量比較大,導致對於時間的查詢比較慢。資料量100W左右,時間是字串格式,形式是 "yyyy-MM-dd HH:mm:ss"。需要對庫表結構進行改造,改造內容就是在原有庫表基礎上新增一個時間相關的欄位,而內容由原欄位提供。 在網上也查
mysql----查詢到A表的欄位插入B表
insert into 表名(欄位1,欄位2,欄位3) select 欄位1,欄位2,欄位3from 表名where … insert into user(id,username) select id,username from t_user where ...
HIVE分割槽表新增欄位後新增欄位值為空,需要帶分割槽加欄位
在分割槽表裡增加欄位後,向分割槽表插入資料有兩種情況: 1.分割槽在修改表結構前存在 2.分割槽在修改表結構前不存在 對於第二種情況,即加欄位後跑的分割槽,bug不存在 針對第一種情形, 執行alter table HIVE_TALBLE add columns(ttzz string); 查分割槽資料新增