2011-11-08 54 views
1

這表我在SQLite數據庫創建:轉換從SQLite的到MySQL

CREATE TABLE [tickets] (
[id] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
[coupon_id] INTEGER NULL, 
[size] FLOAT NULL, 
[phone] VARCHAR(10) NULL, 
[date] DATE DEFAULT CURRENT_DATE NULL, 
[time] TIME DEFAULT CURRENT_TIME NULL, 
[product] TEXT NULL 
); 

現在INSERT操作:

INSERT INTO "tickets" VALUES(429,9,18.16,'949-893-5032','2010-11-30','17:46:39','Kids’ Kups Berry Interesting™'); 
INSERT INTO "tickets" VALUES(430,9,12.04,'847-188-1359','2010-11-25','10:54:00','Raspberry Collider™'); 
INSERT INTO "tickets" VALUES(431,9,14.1,'204-682-5560','2010-12-08','15:34:07','Celestial Cherry High™'); 

現在同桌我在MySQL創建:

CREATE TABLE tickets (
id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL, 
coupon_id INTEGER NULL, 
size FLOAT NULL, 
phone VARCHAR(10) NULL, 
date TIMESTAMP DEFAULT CURRENT_TIMESTAMP NULL, 
time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NULL, 
product TEXT NULL 
); 

INSERT針對MySQL的操作是:

INSERT INTO tickets VALUES(429,9,18.16,'949-893-5032','2010-11-30','17:46:39','Kids’ Kups Berry Interesting™'); 
INSERT INTO tickets VALUES(430,9,12.04,'847-188-1359','2010-11-25','10:54:00','Raspberry Collider™'); 
INSERT INTO tickets VALUES(431,9,14.1,'204-682-5560','2010-12-08','15:34:07','Celestial Cherry High™'); 

當我將我得到了一個錯誤的值: - there can be only one TIMESTAMP column with current_timestamp in default of on update clause

...但我不能夠把所有這些值插入到MySQL。幫我?

+0

你得到什麼錯誤? – Thanatos

+0

問題只是在mysql中插入值 – John

+0

對,如果你不能在INSERT中插入MySQL,MySQL無疑會給你一個錯誤信息,說明它爲什麼不喜歡你的INSERT語句。閱讀它,理解它,至少在這裏發佈,以便我們可以幫助你。 – Thanatos

回答

1

SQLite中,你有兩列

[date] DATE DEFAULT CURRENT_DATE NULL, 
[time] TIME DEFAULT CURRENT_TIME NULL, 

而在MySQL只有一個

date TIMESTAMP DEFAULT CURRENT_TIMESTAMP NULL, 

和你想上插入兩個值...

你應該試試

INSERT INTO tickets VALUES(..., '2010-11-30 17:46:39', ...) 
+0

Marco:)完全一樣,但是如果我想插入與上面相同的內容嗎? – John

+0

@root:使用'DATE'列和'TIME'列;) – Marco

+0

INSERT INTO票據VALUES(429,9,18.16,'949-893-5032','2010-11-30','17:46 :39','Kids'Kups Berry有趣的™'); – John

1

首先,您的varchar列的大小爲10,但是您插入的長度大於10個數據。確保您的varchar列足夠滿足您的數據。

+0

+1在得到正確數量的VALUES列後,注意到OP的* next *問題(即MySQL惡意靜默數據截斷)。 –

+0

這不完全沉默,是嗎?我認爲這至少會在某處發出警告。 (雖然,我個人想在這種情況下放棄。) – Thanatos

+0

任何不如在你臉上炸開,尖叫血腥的謀殺對我來說都是沉默的。您可以[加緊](http://dev.mysql.com/doc/refman/5.5/en/server-sql-mode.html#sqlmode_strict_all_tables),但是這樣做的人數要少於注意警告(無論何處它會)。 –

0

您的MySQL模式似乎對您嘗試插入的內容不正確。

本文摘自:Should I use field 'datetime' or 'timestamp'? ... MySQL中的時間戳通常用於跟蹤對記錄的更改,並且每次記錄更改時都會更新。如果你想存儲一個特定的值,你應該使用日期時間字段。

你的MySQL架構更改爲更接近於:

...

  • 電話VARCHAR(12)NULL,
  • 日期DATE DEFAULT CURRENT_DATE NULL,
  • 時間時的缺省值CURRENT_TIME NULL ,

...

+0

:)我嘗試每一個都不工作大聲笑,你也可以檢查你的提示。謝謝 – John