2010-05-20 5 views
3

J'ai des problèmes avec mysql. Je peux lire et écrire, mais maintenant je veux ajouter quelques champs à une table. Je lance cette commande: ALTER TABLE Pubs ADD COLUMN issue tinyint AFTER volume;Impossible de modifier une table

mais je reçois ce message d'erreur: ERROR 7 (HY000): Error on rename of './user_acct/Pubs.MYI' to './user_acct/#sql2-cb0-76f2.MYI' (Errcode: 13)

J'ai créé cette table il y a quelques mois, il a modifié un peu, il a travaillé ensuite. Je peux toujours mettre à jour et insérer des éléments, mais je ne peux plus modifier la table.

Toute aide serait appréciée.

--Dave

Répondre

2

Vous pouvez utiliser perror à undesrtand erreur mysql:

$ perror 13 
OS error code 13: Permission denied 
+0

Mais pourquoi mysql pourrait-il ajouter des entrées à la table (et changer des fichiers sur le disque) mais ne pourrait pas le renommer? – fastmultiplication

0

Est-ce que l'utilisateur MySQL sur le système ont l'autorisation d'écriture dans le dossier ./user_acct/?

+0

Je n'ai pas accès au serveur mysql. On m'a donné le compte, l'hôte et le port. L'administrateur a dit qu'il "fixe les permissions" mais l'erreur persiste. Au moins, je suis à peu près certain que je ne peux rien y faire. Merci, Dave –

0

Seule l'autorisation d'accès est la question

Erreur:

mysql> rename table BL_Backup.TMP_BL_transaction_02 to BL_Backup.BL_transaction_02; 
ERROR 7 (HY000): Error on rename of './BL_Backup/TMP_BL_transaction_02.MYI' to './BL_Backup/BL_transaction_02.MYI' (Errcode: 13) 

Solution

[[email protected] Db_Backup]# ll 
total 52 
drwxr-xr-x 2 root root 4096 Sep 28 18:19 BL_Backup 
drwx------ 2 mysql mysql 49152 May 19 15:59 mauj_2010_2011 

[[email protected] Db_Backup]# chown mysql:mysql BL_Backup 

[[email protected] Db_Backup]# ll 
total 52 
drwxr-xr-x 2 mysql mysql 4096 Sep 28 18:19 BL_Backup 
drwx------ 2 mysql mysql 49152 May 19 15:59 mauj_2010_2011 

mysql> rename table TMP_BL_transaction_02 to BL_transaction_02; 
Query OK, 0 rows affected (0.00 sec) 
0

Je viens de croiser cela. Je recevais le code d'erreur 13 quand j'essayais de faire quoi que ce soit qui changerait le .frm de mes anciennes tables MyISAM, mais pas les plus récentes. C'était parce que le processus de mise à jour d'ubuntu (fait quelques semaines auparavant) avait mysql d'une façon ou d'une autre pour vérifier les permissions sur un fichier au fond de/tmp auquel il n'avait pas de persmissions. J'ai découvert ceci en utilisant 'dmesg' et en voyant l'erreur d'autorisation refusée.

[111111111.222222] type=1503 audit(1862.6:7): operation="link" 
    pid=<> parent=1 profile="/usr/sbin/mysqld" requested_mask="::l" 
    denied_mask="::l" fsuid=<> ouid=<> 
    name="/tmp/upgrade-XX-X/var/lib/mysql/<dbname>" 
    name2="/tmp/upgrade-XX-X/var/.wh..wh.aufs" 

Et se demandant pourquoi dans le monde mysql essayait d'obtenir des informations sur ce fichier?

chmod 777 sur ce fichier .wh n'a pas aidé, mais chown mysql:mysql fait.

Questions connexes