2016-05-13 54 views
0

我對MySQL數據庫感到非常頭痛。這是我的問題。查詢不能在Mysql數據庫中工作

我正在開發一個網站在PHP與SQL Server作爲數據庫,一切工作正常。 數據庫1

比我必須改變數據庫到MySQL,我已經做到了這一點,並創建了一些存儲過程和功能,一切工作正常。 數據庫2

現在我有MySQL數據庫轉移到另一個MySQL服務器,數據庫。這裏發生問題是因爲現在我創建的舊存儲過程和查詢不起作用。我的DB3結構與DB2相同。

如果我在中激發此查詢DB2select * from Online_Patient;沒有錯誤。在DB3

同一查詢拋出一個錯誤:

Error Code: 1146. Table 'Online_Patient' doesn't exist

但是,當我改變我的查詢select * from online_patient;它給了我正確的結果。

那麼,有沒有辦法解決這個錯誤還是我必須改變所有查詢和存儲過程,也有在存儲過程中的動態查詢,以便只可以大寫不能轉換爲小寫。

+1

檢查數據庫的排序規則。將其設置爲不區分大小寫。 [這](http://stackoverflow.com/questions/1294117/how-to-change-collat​​ion-of-database-table-column)可能會有所幫助。 –

+0

我正在使用MySQL工作臺,那麼你能指導我如何做到這一點? – Archish

+0

我建議將表格改名爲小寫。以小寫形式使用表名的最佳做法。 – sAcH

回答

2

找到您的mysql配置文件。它應該被命名爲my.cnf。您可以在輸出開始處運行mysqld --help --verbose,這是您可以查找文件的默認位置。我的輸出是:

Default options are read from the following files in the given order: 
C:\Windows\my.ini C:\Windows\my.cnf C:\my.ini C:\my.cnf C:\xampp\mysql\my.ini C:\xampp\mysql\my.cnf 

找到的lower_case_table_names指令並將其設置爲1:

lower_case_table_names = 1

從MySQL文檔:http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_lower_case_table_names

If set to 0, table names are stored as specified and comparisons are case sensitive. If set to 1, table names are stored in lowercase on disk and comparisons are not case sensitive. If set to 2, table names are stored as given but compared in lowercase. This option also applies to database names and table aliases. For additional information, see Section 10.2.2, 「Identifier Case Sensitivity」.

然後,重新啓動MySQL服務器。

+0

也可以這篇文章:http://dev.mysql.com/doc/refman/5.7/en/identifier-case-sensitivity.html –

+0

我的數據庫是在服務器上,所以我怎麼能更改my.cnf?服務不會讓我改變my.cnf文件你不覺得嗎?如果有可能請分享。 – Archish

+0

如果您有權訪問服務器和更改conf文件的權限,則不會出現問題。如果您無法訪問,則應重新命名所有表或更改查詢。我沒有看到其他解決方案。 –