MySQL > 테이블이 존재하지 않습니다.하지만 그렇다(혹은 그래야 한다)
MySQL 설치의 datadir를 변경했는데, 1개를 제외한 모든 베이스가 정상적으로 이동했습니다.할 수 있고, 접속할 수 .USE
데이터베이스입니다. SHOW TABLES
또한 모든 테이블이 올바르게 반환되며 각 테이블의 파일이 MySQL 데이터 디렉토리에 존재합니다.
SELECT
테이블이 존재하지 않는다는 오류 메시지가 나타납니다.이 같은 표를 수이 안 돼요.SHOW TABLES
★★★★★★ 。
으로는 내내 my my my my my my my mySHOW TABLES
는 파일 존재 목록을 표시하지만 파일이 파손되었는지 여부는 확인하지 않습니다.그 때문에, 그 파일은 리스트 할 수 있지만, 액세스 할 수 없습니다.
그럼에도 불구하고, 그것은 추측일 뿐이다.이런 건 처음 봐요.이 시점에서 데이터베이스를 재기동하여 테스트할 수는 없지만, 이 데이터베이스를 사용하는 다른 모든 애플리케이션은 정상적으로 실행되고 있습니다.하지만 그건 추측일 뿐이야, 난 이걸 전에 본 적이 없어.
왜 이런 일이 일어나는지 아는 사람 있나요?
예:
mysql> SHOW TABLES;
+-----------------------+
| Tables_in_database |
+-----------------------+
| TABLE_ONE |
| TABLE_TWO |
| TABLE_THREE |
+-----------------------+
mysql> SELECT * FROM TABLE_ONE;
ERROR 1146 (42S02): Table 'database.TABLE_ONE' doesn't exist
혹시나 누군가 아직도 신경 쓸까 봐
명령어를 사용하여 데이터베이스 디렉토리를 직접 복사한 후에도 동일한 문제가 발생하였습니다.
cp -r /path/to/my/database /var/lib/mysql/new_database
를 로 이 을 수행할 InnoDB
tables ' does exist' does not exist"라는 오류가 .
는 '''가 필요하다는 입니다.ib*
(예: "MySQL을 MySQL 의 루트에 합니다.ibdata1
,ib_logfile0
★★★★★★★★★★★★★★★★★」ib_logfile1
를 참조해 주세요.
내가 그것들을 복사했을 때, 그것은 나에게 효과가 있었다.
Mac OS(MySQL DMG Installation)에서는 MySQL 서버를 간단히 재시작하면 문제가 해결되었습니다.동면이 원인인 것 같아요
사용 중인 테이블 이름의 케이스가 꺼졌을 때 이 문제가 발생합니다.그래서 테이블은 'db'라고 하는데 선택문에 'DB'를 사용했어요.같은 케이스인지 확인해 주세요.
는, 이 에러를 설정했을 할 수 있습니다.lower_case_table_names
로로 합니다.1
다음으로 해당 변수의 기본값으로 작성된 테이블에 액세스하려고 합니다.이 경우 이전 값으로 되돌릴 수 있으며 표를 읽을 수 있습니다.
이유는 모르겠지만 내 경우에는 외부 키 검사를 비활성화하고 활성화하는 것만으로 해결했습니다.
SET FOREIGN_KEY_CHECKS=0;
SET FOREIGN_KEY_CHECKS=1;
- mysqld를 정지하다
- folder: backup mysql : folder
cp -a /var/lib/mysql /var/lib/mysql-backup
- 이전 시스템에서 데이터베이스 폴더 복사
/var/lib/mysql
- 오래된 데이터베이스에서 ib*(ib_logfile*, ibdata)를 덮어씁니다.
- mysqld를 기동하다
- 덤프 다베이스
mysqldump >dbase.mysql
- stop mysql 서비스
/var/lib/mysql
- 을 바꾸다
/var/lib/mysql-backup
로로 합니다./var/lib/mysql
- mysqld를 기동하다
- 데이터베이스 생성
mysqldump < dbase.mysql
쿼리를 실행하십시오.
SELECT
i.TABLE_NAME AS table_name,
LENGTH(i.TABLE_NAME) AS table_name_length,
IF(i.TABLE_NAME RLIKE '^[A-Za-z0-9_]+$','YES','NO') AS table_name_is_ascii
FROM
information_schema.`TABLES` i
WHERE
i.TABLE_SCHEMA = 'database'
안타깝게도 MySQL에서는 Unicode 및 인쇄 불가능한 문자를 테이블 이름에 사용할 수 있습니다.일부 문서/웹 사이트에서 작성 코드를 복사하여 테이블을 만든 경우, 어딘가에 0 폭의 공간이 있을 수 있습니다.
저도 같은 문제가 있어서 2~3일 동안 찾아봤지만 해결방법이 정말 미련했어요.
mysql을 재시작합니다.
$ sudo service mysql restart
이제 테이블에 액세스할 수 있습니다.
난 이 악몽에 3일밖에 안걸렸어.이상적으로는 복원할 수 있는 백업이 있어야 하며 손상된 테이블을 삭제하기만 하면 됩니다.이러한 종류의 오류로 인해 ibdata1이 커질 수 있습니다(중간한 테이블의 경우 100GB 이상 크기).
mySqlDump에 의존한 경우와 같이 최근 백업이 없는 경우, 과거 어느 시점에 백업이 자동으로 중단되었을 수 있습니다.mySqlDump 실행 중 잠금 오류가 발생하기 때문에 데이터베이스를 내보내야 합니다.
으로 「 」를 /var/log/mysql/database_name/
table_name 을 합니다.*
그런 다음 즉시 테이블을 덤프하려고 합니다.이렇게 하면 됩니다.이제 데이터베이스를 새 데이터베이스로 복원하고 누락된 테이블을 다시 작성합니다.그런 다음 손상된 데이터베이스를 버립니다.
우리의 경우, 우리는 또한 지속적으로mysql has gone away
모든 데이터베이스에 임의의 간격으로 메시지가 표시되며 손상된 데이터베이스가 제거되면 모든 것이 정상으로 돌아갑니다.
idb-file을 복사하기 전에 sql 쿼리를 실행하여 테이블스페이스를 폐기해 보십시오.
ALTER TABLE mydatabase.mytable DISCARD TABLESPACE;
idb 파일 복사
ALTER TABLE mydatabase.mytable IMPORT TABLESPACE;
MySql 재시작
그래, 좀 황당하게 들리겠지만 내 비위를 맞춰봐
되었습니다.
SELECT * FROM `table`
가지 .
.- -알아요!) -알아요! -알아요!!
2) 특정 따옴표 기호 = : Tab 위에 있는 키 사용
그 해결책은 터무니없게 들리겠지만, 효과가 있었고 토요일 저녁이고 저는 오전 9시부터 일을 하고 있습니다.-그래서 받아들이겠습니다:)
행운을 빌어요.
내게 효과가 있었던 건 테이블이 존재하지도 않았는데 그냥 떨어뜨리는 거였어요.그런 다음 테이블을 다시 만들고 이전에 수행한 SQL 덤프에서 다시 채웁니다.
테이블 이름의 메타베이스가 있을 거야 내가 떨어뜨릴 때까지 거기 남아 있었을 거야
WAMP 업그레이드 후 데이터베이스 백업이 없는 상태에서 이 문제가 발생하였습니다.
이 방법은 효과가 있었습니다.
새로운 WAMP를 정지
필요한 데이터베이스 디렉토리 및 이전 WAMP 설치에서 ibdata1 파일을 복사
★★
ib_logfile0
★★★★★★★★★★★★★★★★★」ib_logfile1
WAMP의 시작
이제 데이터베이스 백업을 만들 수 있습니다.그러나 서버를 다시 시작해도 여전히 문제가 발생합니다.이제 WAMP를 다시 설치하고 데이터베이스를 Import합니다.
MySQL을 재설치해야 하는 경우에도 동일한 문제가 발생했는데, 설치 중에 InnoDB 로그 파일인 ib_logfile* 파일(로그 파일 맞습니까?)에 대한 데이터를 저장하는 일부 구성 파일이 덮어쓰기된 것 같습니다.이 문제를 해결하기 위해 ib_logfile* 파일을 삭제했습니다.
고스트 테이블에서도 같은 문제가 있었습니다.다행히 장애 발생 전 SQL 덤프가 있었습니다.
제 경우, 다음과 같이 해야 했습니다.
- mySQ 정지l
- *에서 ib*합니다.
/var/mysql
로 - ★★
/var/mysql/{dbname}
- mySQ 재시작l
- 빈 데이터베이스 재생성
- 덤프 파일 복원
메모: 덤프 파일이 필요합니다.
데이터베이스에 mysqldump 실행:
mysqldump -u user -ppass dbname > D:\Back-ups\dbname.sql
데이터베이스 복원
mysql -u user -ppass dbname < D:\Back-ups\dbname.sql
이제 데이터베이스의 모든 테이블이 완전히 복원되었습니다.해봐...
SELECT * FROM dbname.tablename;
만 가능ibdata1
이전 데이터 디렉토리에서 파일을 가져옵니다.하지 마세요.ib_logfile1
★★★★★★★★★★★★★★★★★」ib_logfile0
MySQL을 사용하다
MariaDB를 새 컴퓨터에 설치하고 데이터 폴더에 이름을 바꾼 Mysql 서비스를 중지했습니다.Mysql\data\table_folders와 ibdata1만 크래시된 HD MySql 데이터 폴더에서 새로 설치된 mysql 데이터 폴더로 복사하는 문제를 해결했습니다.
ib_logfile0 및 ib_logfile1을 건너뛰었습니다(그렇지 않으면 서버가 서비스를 시작하지 않았습니다).
mysql 서비스를 시작했습니다.
서버가 실행되고 있습니다.
이 문제는 비활성(파손?) innodb 로그 파일과 관련된 것으로 보입니다.일반적으로, 그것들은 단지 다시 만들어지기만 하면 된다.
다음은 mysql을 재시작해야 하는 해결 방법입니다.
- 로그 파일 재생성(mysql 삭제 후 재시작)
- 로그 파일 크기 조정(MySql 5.6+가 파일을 재생성합니다)
- 어떤 종류의 데이터 이행을 실시하고 있는 경우는, 다른 사람이 이미 말한 대로, 올바른 파일을 이행해, 권한을 부여하고 있는 것을 확인해 주세요.
- 데이터와 로그 파일의 사용 권한을 확인합니다. 이 mysql은 두 가지 모두의 소유자입니다.
- 다른 모든 작업이 실패할 경우 데이터베이스를 다시 만들어야 합니다.
다음으로 다른 시나리오(버전 업그레이드)를 나타냅니다.
OS(Mac OS El Captain)를 재설치하여 새로운 버전의 mysql(homebrew 사용)을 설치하였습니다.인스톨 된 버전(5.7)은, 공교롭게도 이전의 버전보다 최신입니다.그런 다음 ib* 파일을 포함한 테이블을 복사하고 서버를 재시작했습니다.mysql 워크벤치에 테이블이 있는데 선택하려고 하면 "Table does not exist"라고 뜨더라고요.
솔루션:
- "Mysql 서버").
mysql.server stop
★★★★★★★★★★★★★★★★★」brew services stop mysql
- 를 하여 서버를 기동하다
mysqld_safe --user=mysql --datadir=/usr/local/var/mysql/
한다)('경로 변경') - 려려를
mysql_upgrade -u root -p password
- 중인 서버를
mysqladmin -u root -p password shutdown
- 를 통상
mysql.server start
★★★★★★★★★★★★★★★★★」brew services start mysql
관련 문서가 여기 있습니다.
제 경우 테이블에 트리거를 정의하고 행을 테이블에 삽입하려고 했습니다.트리거가 잘못되어 삽입 오류가 발생한 것 같습니다.테이블이 존재하지 않습니다.
오늘 같은 문제를 만났다.이것은 mysql "Identifier Case Sensitivity" 문제입니다.
해당 데이터 파일을 확인하시기 바랍니다.파일 시스템에서 파일 이름은 소문자로 표시되지만 "show tables" 명령에 나열된 테이블 이름은 대문자로 표시되었을 가능성이 높습니다.변수 " " " "의 경우lower_case_table_names
" 는0 입니다. " " " 0 " " " " " " " " " " " " " " " " " " " 테이블이 존재하지 않습니다." " " " 이름 는 "를 반환합니다.lower_case_table_names
0입니다.
테이블 이름에 숨겨진 문자가 있을 수 있습니다.쇼테이블을 할 때는 안 나오잖아요."SHOW CREATE TABLE_ONE"을 실행하고 탭을 눌러 "TABLE_ONE"을 완성하여 숨겨진 문자가 있는지 확인할 수 있습니다.또한 테이블을 떨어뜨리고 다시 만들어 본 적이 있습니까?권한에 문제가 없는지, 숨겨진 문자가 없는지 확인합니다.
TimeMachine 백업을 가져온 후에도 동일한 문제가 발생했습니다.MySQL 서버를 중지하고 ib* 파일에 대한 읽기/쓰기 권한을 수정하는 것이 해결책이었습니다.
또 하나의 답변은 여기서 제기할 가치가 있다고 생각합니다(그것은 같은 문제를 안고 이곳에 왔기 때문에, 이것이 저의 답변이 되었기 때문입니다).
쿼리의 테이블 이름 철자가 데이터베이스와 정확히 일치하는지 다시 확인합니다.
당연한 일이지만, "사용자" 대 "사용자"와 "사용자"와 같은 것들이 사람들을 혼란스럽게 할 수 있기 때문에 이 목록에 있는 것이 도움이 될 것이라고 생각했습니다.:)
내 경우 내보낸 sql 파일을 가져올 때 테이블 생성 쿼리에 대해 테이블이 존재하지 않는다는 오류가 발생했습니다.
데이터베이스명에 밑줄이 있고 그 직전에 mysql이 이스케이프 문자를 넣고 있는 것을 알았습니다.
그래서 데이터베이스 이름에서 밑줄을 제거했고 모든 게 잘 해결됐어요
다른 사람에게도 도움이 되길 바랍니다.
보니 이름이 .' Customers'
즉, 선두의 공간이 있는
즉,
a) 쿼리가 중단되었습니다.
b) 테이블이 예상대로 알파벳 순서로 나타나지 않아서 당황해서 볼 수 없었습니다.
RENAME TABLE ` Customer` TO `Customer`;
저 같은 경우에는SQLCA.DBParm
파라미터를 지정합니다.
나는 사용했다
SQLCA.DBParm = "Databse = "sle_database.text""
하지만 꼭 그래야만 한다
SQLCA.DBParm = "Database='" +sle_database.text+ "'"
설명:
다음 3개의 문자열을 조합합니다.
1. Database=' - "Database='"
2. (name of the database) - +sle_database.text+
3. ' - "'" (means " ' " without space)
사분면에 공백을 사용하지 마십시오.제 동료 Jan에게 감사드립니다.
xampp\mysql\data\dbname
에는 tablename.및 tablename.file.dbname dbname dblename tablename 이 있습니다.frm "tablename.ibd "tablename" 입니다.
mysql을 사용하다
창문에서도 같은 문제가 발생했어요.ib* 파일 및 mysql 디렉토리를 thd 데이터 디렉토리에 복사하는 것 외에 my.ini 파일도 대조해야 했습니다.
이전 설치의 my.ini 파일에는 다음 행이 없습니다.
innodb-page-size=65536
하지만 내 새 설치는 그랬다.이전 설치 프로그램에는 이 옵션이 없었기 때문일 수 있습니다.이것을 삭제하고 서비스를 재기동하면 테이블이 정상적으로 동작합니다.즉, 새로운 my.ini 파일이 오래된 파일의 복제품인지 확인합니다.단, 새로운 설치에 따라서는 datadir, plugin-dir 및 포트번호는 예외입니다.
언급URL : https://stackoverflow.com/questions/7759170/mysql-table-doesnt-exist-but-it-does-or-it-should
'programing' 카테고리의 다른 글
IF 문의 & (AND) 및 | (OR) (0) | 2022.09.18 |
---|---|
가상 환경 내에서 pip 자체를 업데이트/업그레이드하려면 어떻게 해야 합니까? (0) | 2022.09.18 |
PHP에서 지정된 키의 값에 따라 연관 배열 배열을 정렬하려면 어떻게 해야 합니까? (0) | 2022.09.18 |
Python에서 대용량 파일을 읽기 위한 느린 방법? (0) | 2022.09.18 |
열을 변경하고 기본값을 변경하려면 어떻게 해야 합니까? (0) | 2022.09.18 |