關於mysql插入數據異常


今天創建數據庫時,在插入數據時出現了幾個問題。(首次在LInux環境下創建數據庫)

一個是關於SQL Error [1146] [42S02]: Table 'struts2exec.s_user' doesn't exist

網上搜查到的帖子如下:

  項目在開發的時候在WINDOWS平台下開發的,開發完了之后在LINUX環境上部署好之后,運行時MySQL數據庫報錯,提示為某個表不存在之類的錯誤信息,后來修改了MySQL的配置文件將大小寫敏感去掉,問題解決。 

編輯/etc/my.cnf文件,在[mysqld]節下 添加 lower_case_table_names=1 參數,並設置相應的值 (備注:為0時大小寫敏感,為1時大小寫不敏感,默認為0)。 

編輯MySQL安裝目錄下的my.ini文件,在[mysqld]節下 添加 lower_case_table_names=1(備注:為0時大小寫敏感,為1時大小寫不敏感,默認為1),可以實現MySql按照建表Sql語句的大小寫狀態來定義表名。

在 MySQL 中,數據庫和表其實就是數據目錄下的目錄和文件,因而,操作系統的敏感性決定數據庫和表命名的大小寫敏感。這就意味着數據庫和表名在 Windows 中是大小寫不敏感的,而在大多數類型的 Unix/Linux 系統中是大小寫敏感的。 

但是按照教程在my.cnf下並沒有mysqld,於是只好在插入數據時嚴格區分大小寫。

另一個則是關於SQL Error [1054] [42S22]: Unknown column 'xxx' in 'field list

很顯然,這是編碼問題,解決方案如下:

修改表的編碼格式

ALTER TABLE `table` DEFAULT CHARACTER SET utf8;

但是雖然修改了表的編碼格式,但是字段的編碼格式並沒有修改過來,又發現一條語句,作用是修改字段的編碼格式:

ALTER TABLE `tablename` CHANGE `字段名1` `字段名2` VARCHAR(36) CHARACTER SET utf8 NOT NULL; 

但是一次只能修改一個字段,還是很麻煩,不方便,最后找到這么一條語句,可以修改整張表的字段:

alter table `tablename` convert to character set utf8;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM