2012-11-05 140 views
1

日子很好,堆棧溢出。mysql從Linux轉儲到Windows

我在將sql文件導入到我的Windows機器時遇到問題。 sql文件來自linux機器。會發生什麼是來自linux的表名是駱駝式的,並且當遷移到windows時,所有變得更低。我不想調整我的代碼,以便能夠訪問我的數據庫,所以無論如何,我可以在Windows中實現駱駝表名稱?

非常感謝。


從Linux的表名: - > FooBar的

當它被導入到MySQL工作臺在窗口: - > foobar的

查詢看起來是這樣的:

SELECT * FROM FooBar; // when the program is pointed to the database in windows, it will spit out that the table does not exist because the table name is "foobar" 
+2

MySQL是不區分大小寫,您_shouldn't need_調整你的腳本,使其工作。 – phillid

+0

但我的Java代碼吐出錯誤,說該表不存在。當我試圖編輯我的源代碼中檢索數據的表名時,它工作正常。它太耗費時間去改變所有的表名,特別是如果代碼將在linux上運行,你將不得不再次恢復。 – Oneb

+0

美好的一天,Oneb,我認爲手頭還有另一個錯誤。你能給我們提供關於你正在接收的確切錯誤以及觸發它的代碼的更多信息嗎? – sunnyrjuneja

回答

2

Linux和Windows在兩種操作系統如何存儲表名稱(僅允許小寫)之間存在區別。這可以通過lower_case_table_names系統變量來控制。您的Windows安裝,可能已將該值設置爲1,你的Linux服務器有這個值設置爲0。按照用戶手冊的「Identifier Case Sensitivity」的一部分,你有兩個選擇:

使用在所有系統上lower_case_table_names=1。與此 的主要缺點是,當您使用SHOW TABLESSHOW DATABASES,你做 看不到他們的原始lettercase中的名稱。

使用lower_case_table_names=0在Unix和lower_case_table_names=2上 的Windows。這保留了數據庫和表名的字母大小寫。 這樣做的缺點是,您必須確保您的陳述 始終在Windows上使用正確的 lettercase引用數據庫和表名。如果您將語句轉移到Unix,其中 lettercase很重要,但如果lettercase不正確,則它們不起作用。

一些鏈接:

+0

感謝很多朋友 – Oneb

+0

似乎也有一個問題時逃脫'。 Windows轉義爲\',但Linux似乎需要''。 – olivervbk